티스토리 뷰
정규식을 배우면서 어느정도 기본을 익히고 제일 먼저 연습하는 것이 이메일 주소 체크하는 것과 함께 URL 주소 체크하는 것입니다. 그러나 사실 URL 은 아래처럼 각 부분별로 구분되어, 이러한 내용이 있고 없고가 차이 때문에 추출하기가 힘든 것중 하나입니다.
각 부분에는 허용되는 특수문자들이 다르기 때문에 이런것들을 검사해줘야 합니다. -_-;
자세한 정보는 RFC1738 을 참고하세요.
URL Syntax:
protocol :// user : password @ host : port / path / filename ? query #ref
- Protocol : 일반적으로 웹페이지를 나타낸다면 http 이고, 이외에 텔넷이나 FTP, 메일, 등등 여러가지가 있습니다. 이 프로토콜에 따라 뒤에 따라오는 주소의 형식도 달라집니다.
- User, Password : 웹인증을 위한 정보입니다. 웹인증을 사용한 사이트에서만 가능하고 일반적인 사이트(예: 네이버, 다음)등에서 적어봤자 불가능합니다.
- Host, Port : 도메인 또는 IP 를 나타내며, 이 호스트에 접속하기 위한 포트를 별도로 지정하게 됩니다. 지정하지 않을 경우 표준으로 지정된 포트번호를 이용하여 접속하게 됩니다. http 의 경우 80, ftp 는 21 등 이미 RFC 에 의해 정해진 기본 포트를 사용합니다.
- Path, Filename : 디렉토리와 파일명입니다. 최근에는 rewrite 를 사용하여 URL 주소를 짧게 쓰는 것을 선호하기 때문에 얼핏봐서는 파일명을 구분하기는 어렵습니다.
- Query, Ref : GET 방식으로 넘기는 값을 Query String 이라 하는데, '키=값' 형태로 작성되며 각 항목은 '&' 로 구분합니다. Ref 는 <a name=""> 을 이용하여 사용된 문서의 특정 부분으로 이동하도록 하는 문법으로 '#' 로 시작합니다.
각 부분에는 허용되는 특수문자들이 다르기 때문에 이런것들을 검사해줘야 합니다. -_-;
자세한 정보는 RFC1738 을 참고하세요.
function collectURL(text) { var rUrlRegex = /(?:(?:(https?|ftp|telnet):\/\/|[\s\t\r\n\[\]\`\<\>\"\'])((?:[\w$\-_\.+!*\'\(\),]|%[0-9a-f][0-9a-f])*\:(?:[\w$\-_\.+!*\'\(\),;\?&=]|%[0-9a-f][0-9a-f])+\@)?(?:((?:(?:[a-z0-9\-가-힣]+\.)+[a-z0-9\-]{2,})|(?:[\d]{1,3}\.){3}[\d]{1,3})|localhost)(?:\:([0-9]+))?((?:\/(?:[\w$\-_\.+!*\'\(\),;:@&=ㄱ-ㅎㅏ-ㅣ가-힣]|%[0-9a-f][0-9a-f])+)*)(?:\/([^\s\/\?\.:<>|#]*(?:\.[^\s\/\?:<>|#]+)*))?(\/?[\?;](?:[a-z0-9\-]+(?:=[^\s:&<>]*)?\&)*[a-z0-9\-]+(?:=[^\s:&<>]*)?)?(#[\w\-]+)?)/gmi; return rUrlRegex.match(text); }
참고 사이트
- RFC1700 [w] http://www.isi.edu/in-notes/rfc1700.txt
- RFC1738 [w] http://www.isi.edu/in-notes/rfc1738.txt
'프로그래밍 > JavaScript' 카테고리의 다른 글
[JS] 정규식으로 URL 추출하기 v0.2 - URL 추출 및 분석/검사 (8) | 2010.03.12 |
---|---|
[JS] jQuery, 속성 셀렉터 표현식(Attribute Selector Expressions) (0) | 2010.02.12 |
[JS] 현재 URL 주소값에 해당하는 메뉴들을 제어하기 (0) | 2009.05.19 |
[JS] 메모리 누수 막기 팁! - Finally (1) | 2008.10.21 |
[JS] escape(), encodeURI(), encodeURIComponent() 차이 (0) | 2008.07.23 |
PNG를 사용하여 자바크스립트 소스 대폭 압축하기 (0) | 2008.07.05 |
[JS] IE 전용 DOM 확장 메소드 applyElement() 를 다른 브라우저에서도 사용하기 - 객체 바깥에 새로운 객체 추가 (0) | 2008.06.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- game
- eve online
- 게임
- Utilities
- 플래시
- JavaScript
- 보안
- 정규식
- 정규표현식
- 자바스크립트
- flash
- 이브 온라인
- 보안정보
- 스타크래프트2
- It
- 해킹
- 팁&정보
- 정보
- 액션스크립트3
- 스크린샷
- 프로그래밍
- as3
- 블레이드앤소울
- dust 514
- PCRE
- ActionScript3.0
- php
- 유틸리티
- 세비지2
- 팁
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함