2015-02-05 2 views
-1

스키마와 도메인 이름 (예 : http://www.domainname.com)으로 URL의 유효성을 검사하려고합니다. 나는이 정규식 사용하고 있습니다 : 그것은 true를 돌려 6 자까지 내가 http://www.ab를 입력 할 때정규식을 사용하여 URL 유효성 확인

/^(http|https):\/\/[\w.\-]+\.[A-Za-z]{2,6}/ 

을, 그 길이 후에는 false를 돌려줍니다. 이 상황을 어떻게 해결할 수 있습니까?

+1

https://mathiasbynens.be/demo/url-regex에서 발표 복잡성과 정확성을 변화의 정규 표현식에의 전체 세트 ("URL 정규식"를 입력 최초의 구글 결과가) 있습니다 –

답변

0

은이 같은 정규 표현식을 사용할 수 있습니다 https?:\/\/www\..*?\.(com|uk|in)가 (당신이 마지막에 맞게 원하는 것을 모두 지정해야

demo here

+0

와우 ... 이것은 아주 좋을 것입니다. 하지만 각 도메인 이름 확장명을 지정해야합니다 .... 그것은 최악의 작업입니다 !!! – sudeep

+0

@sudeep - 도메인 'http : // www.abc.xysdasaa'가 유효합니까? 이것이 받아 들여지지 않도록해야합니까? – TheLostMind

+0

@ TheLostMind 그 미래에 유효 할 수 있습니다. 따라서 유효성 검증은 구문 론적이라고 생각할 수 있습니다. –

0

이 하나를 시도해보십시오. 여기

^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$ 

테스트 : https://regex101.com/r/xR0oV9/1

조금만 정보를 수정 해주세요.

(http|https) 대신에 부분이 모두 있기 때문에 더 짧을수록 (https?)이되며, s은 선택 사항입니다. 대신이의

: [A-Za-z] 당신은 단지 소문자를 사용할 수 있습니다 [a-z]와 대소 문자를 구분 일치를 의미한다 (마지막 슬래시 / 후) 당신의 패턴의 끝에 i 수정을 추가합니다.

0

diegoperini의이 문자는 조금 더 길 수도 있지만 거의 완벽합니다 (내 눈에 적어도).

_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)[email protected])?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$_iuS 

C#에서 사용하려면 약간 변경해야합니다. 나는 이미이 일을 이미 해왔다.

^(?:(?:https?|ftp)://)(?:\S+(?::\S*)[email protected])?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$