2011-11-27 5 views
0

내가 발견이 프로토콜 또는 WWW 부분없이 URL을 인식하도록되어있어 상태 사용자 GianPac에 의해 in this post 일치하는 URL에 대한 존 그루버 (John Gruber)의 정규식의 업데이트 된 버전 :그루버 URL 정규식은 "domain.com"을 캡처 조정할

(? i) \ b ((? : [az] [\ w -] + :(? : 1,3) | [a-z0-9 %]) | www \ d {0,3} [. ] [[a-z0-9 .-] + [.] [az] {2,4} /?) (? : [^ \ s() <>] + | ([^ \ s() <> ] + | (([^ \ s() <>] +)))) (? (([^ \ s() <] ")") "["\ "s"!() [] {}; : '\ "., <>?«»" "' ']))

대부분의 경우이 방법이 효과적이지만, 일치하지 않는 "google.com". "google.comm""google.co.uk"과 일치하므로 약간의 감독이 필요합니다.

문제는 문자 그대로 정규식을 싫어합니다. 내 인생의 골칫거리 야. 나는 단지 "google.com"을 허용하기 위해이 한 번 더 조정할 시도하고 싶다 - 누구든지 나에게 포인터를 던질 수 있습니까? 나는이 부분의 코드와 관련이 있다고 생각한다 :

+[.][a-z]{2,4}/?) 

?

답변

1

{2,4}에서 {1,4}로 변경하면 일치합니다.

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.-]+[.][a-z]{1,4}/?)(?:[^\s()<>]+|(([^\s()<>]+|(([^\s()<>]+)))))(?:(([^\s()<>]+|(([^\s()<>]+))))|[^\s`!()[]{};:'\".,<>?«»“”‘’])) 

그것은 비록 아직 완전히 이해할 수없는, 그리고 내가 google.com 시작에 일치하지 않는 정규식 URL 검사를 믿을 거라고 확신 아니에요! 대부분의 언어에는 URL 구문 분석을 위해 내장 된 것이 있습니다. 어쨌든 가능하면 더 나은 옵션입니다.

+0

그래, 네가 맞아. 난 그냥이 답변을 게시했다 :) – mootymoots