[Javascript] 도메인 체크 정규식
종종 도메인 유효성 체크할 경우가 생긴다.
해당 글은 DVLP님의 글을 가져온 글이며, 문제가 될 경우 삭제할 수 있다.
아래는 DVLP님이 정리 해 놓은 내용.
자바스크립트 도메인 체크 정규식
구굴링에서 찾아보니깐
function ValidUrl(str) {
var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name
'((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path
'(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string
'(\\#[-a-z\\d_]*)?$','i'); // fragment locator
if(!pattern.test(str)) {
return false;
} else {
return true;
}
}
이런 함수가 있어서 이걸 사용해 볼려고 하니 우리나라에는 안맞는거 같아서 수정함.
http://우리나라.한국
이런 도메인이 존재 할수 있는데 위 함수로는 체크가 안됨
그래서 아래 소스로 수정 하였습니다.
^(https?:\/\/)?((([a-z\d](([a-z\d-]*[a-z\d]))|([ㄱ-힣])*)\.)+(([a-zㄱ-힣]{2,}))|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*(\?[;&a-z\d%_.~+=-]*)?(\#[-a-z\d_]*)?$
function ValidUrl(str) {
var pattern = new RegExp('^(https?:\\/\\/)?'+ // 프로토콜
'((([a-z\d](([a-z\d-]*[a-z\d])|([ㄱ-힣]))*)\.)+[a-z]{2,}|'+ // 도메인명 <-이부분만 수정됨
'((\\d{1,3}\\.){3}\\d{1,3}))'+ // 아이피
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // 포트번호
'(\\?[;&a-z\\d%_.~+=-]*)?'+ // 쿼리스트링
'(\\#[-a-z\\d_]*)?$','i'); // 해쉬테그들
if(!pattern.test(str)) {
return false;
} else {
return true;
}
}
테스트 결과
http://domain.com
https://domain.com
http://www.domain.com.test.co.kr
https://www.domain.com
https://www.domain.c
https://www.domain.comses
HTTPS://WWW.DOMAIN.COM
HTTPS://WWW.DOMAIN.123
HTTPS://WWW.DOMAIN.COM
https://domaincom?ads=asdf23
http://안녕하세요.com
http://대한민국.한국
http://1234123.com
http://1234123.한국
http://127.0.0.1:8080?#hash
http://127.0.0.1:8080?test=1#hash
- copyright http://dvlp.tistory.com/