2008. 2. 20. 19:18
Programing/HTML/JavaScript/CSS
문자열중에서 URL(그중 프로토콜과 도메인 부분까지만...) 추출해야 하는 작업이 있었습니다.
정규식을 잘 못다뤄서 상당한 시간을 소비했네요;;;
그렇다고 결과가 썩 맘에 들지는 않습니다.
문제점이 많아서....-_-;;
코드는 간단합니다. 몇 시간 쥐어짜낸것 치고는 형편없죠....-_-;;
정말 간단하죠???
풀이를 하자면
(http(s)?:\/\/)? - http 또는 https 프로토콜명이 있어도 그만 없어도 그만. '?' 는 0번 또는 1번 매칭이죠~
\w+ - 알파벳과 숫자로 된 문자열이 1개 이상 매칭~
(\.\w+)+ - .daum 처럼 닷(.) 다음에 문자열로 이루어진 패턴이 1회 이상 매칭
언뜻 보면 잘 되는 것 같습니다만 저 코드는 치명적인 버그를 갖고 있습니다...(그러니 저 코드는 쓰지마시길~^^)
문제점이 보이시나요?
아래와 같은 문제점이 저 코드안에 도사리고 있답니다...
저 문제들은 오늘 퇴근하고 머리를 좀 굴려봐야겠습니다.
정규식만 제대로 이해하면 될텐데 말이죠~
내일 다시 제대로된 코드를 포스팅 하도록 하겠습니다.
정규식을 잘 못다뤄서 상당한 시간을 소비했네요;;;
그렇다고 결과가 썩 맘에 들지는 않습니다.
문제점이 많아서....-_-;;
코드는 간단합니다. 몇 시간 쥐어짜낸것 치고는 형편없죠....-_-;;
<script>
function aa(){
var aa = document.getElementById('aa');
var patt = /(http(s)?:\/\/)?\w+(\.\w+)+/gi;
var result = (aa.value.match(patt));
aa.value = result.join('\n');
}
</script>
</head>
<body>
<textarea id="aa" cols="100" rows="10">
* 컴퓨터 싸게 잘 사는 방법 - 가격비교 PC분야 우수업체 아싸컴! 인텔 콘로탑재 PC 최저가 178,500원.
http://www.assacom.com
* 컴퓨터전문 쇼핑몰 싸다컴 - 무이자할부, 전국출장A/S, 경품이벤트 무료배송, 특가HP노트북 - 싸다컴
http://www.ssadacom.com
* 컴퓨터전문몰 아이프로컴 - 컴퓨터22만원할인, 쿼드 40만원, 전국출장A/S, 본체10만원, USB증정.
http://www.iprocom.co.kr
* 인터넷 익스플로러 7 - 지금 업그레이드 하세요. 최신 Google에 최적화된 IE7
http://www.google.com/toolbar/ie7/
* 조립컴퓨터 강자 팝콘피씨 - 인텔최신 코어2쿼드 컴퓨터 할인판매 전국 출장A/S 저가 컴퓨터143,500원
http://www.popcornpc.co.kr/user_pag
</textarea>
<input type="button" onclick="aa()">
function aa(){
var aa = document.getElementById('aa');
var patt = /(http(s)?:\/\/)?\w+(\.\w+)+/gi;
var result = (aa.value.match(patt));
aa.value = result.join('\n');
}
</script>
</head>
<body>
<textarea id="aa" cols="100" rows="10">
* 컴퓨터 싸게 잘 사는 방법 - 가격비교 PC분야 우수업체 아싸컴! 인텔 콘로탑재 PC 최저가 178,500원.
http://www.assacom.com
* 컴퓨터전문 쇼핑몰 싸다컴 - 무이자할부, 전국출장A/S, 경품이벤트 무료배송, 특가HP노트북 - 싸다컴
http://www.ssadacom.com
* 컴퓨터전문몰 아이프로컴 - 컴퓨터22만원할인, 쿼드 40만원, 전국출장A/S, 본체10만원, USB증정.
http://www.iprocom.co.kr
* 인터넷 익스플로러 7 - 지금 업그레이드 하세요. 최신 Google에 최적화된 IE7
http://www.google.com/toolbar/ie7/
* 조립컴퓨터 강자 팝콘피씨 - 인텔최신 코어2쿼드 컴퓨터 할인판매 전국 출장A/S 저가 컴퓨터143,500원
http://www.popcornpc.co.kr/user_pag
</textarea>
<input type="button" onclick="aa()">
정말 간단하죠???
풀이를 하자면
(http(s)?:\/\/)? - http 또는 https 프로토콜명이 있어도 그만 없어도 그만. '?' 는 0번 또는 1번 매칭이죠~
\w+ - 알파벳과 숫자로 된 문자열이 1개 이상 매칭~
(\.\w+)+ - .daum 처럼 닷(.) 다음에 문자열로 이루어진 패턴이 1회 이상 매칭
언뜻 보면 잘 되는 것 같습니다만 저 코드는 치명적인 버그를 갖고 있습니다...(그러니 저 코드는 쓰지마시길~^^)
문제점이 보이시나요?
아래와 같은 문제점이 저 코드안에 도사리고 있답니다...
- www.img-daum.net 같은 하이픈(-)이 들어간 도메인은 추출을 못합니다.
- 언더바(_)가 들어가도 마찬가지죠...
- 한글도메인도 같은 신세입니다~
저 문제들은 오늘 퇴근하고 머리를 좀 굴려봐야겠습니다.
정규식만 제대로 이해하면 될텐데 말이죠~
내일 다시 제대로된 코드를 포스팅 하도록 하겠습니다.
'Programing > HTML/JavaScript/CSS' 카테고리의 다른 글
Javascript OOP - 객체 생성과 property (1) | 2008.04.07 |
---|---|
URL, 도메인 추출 정규식 (2) (5) | 2008.02.22 |
javascript의 클로저(closure) (2) | 2007.09.21 |
객체의 메서드로 setInterval 활용시 this 사용에 관한 문제점 (3) | 2007.08.07 |
cloneNode 의 활용 (0) | 2007.06.14 |