ClojureScript 정규 표현식이 기본 JavaScript 정규 표현식으로 컴파일되므로 ClojureScript에서 URL의 유효성을 검사하는 방법을 기본적으로 묻는 것은 자바 스크립트에서이를 수행하는 방법입니다. https://mathiasbynens.be/demo/url-regex
이 Diego Pierini's Javascript solution입니다 : ClojureScript에서
/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)[email protected])?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|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*)?$/i
:
(def url-pattern #"(?i)^(?:(?:https?|ftp)://)(?:\S+(?::\S*)[email protected])?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|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*)?$")
(re-matches url-pattern "http://www.google.com")
이 문제가
이
는 URL이 정규 표현식을 사용하여 확인하는 방법에 대한 변종의 많은 페이지입니다 ? 유효한 URL이 값을 반환하고 스크랩이 nil을 반환하는 것처럼 보입니다. 또는 나는 무엇인가 놓치 느냐? –URL을 식별하는 올바른 URL 정규식을 알아내는 데 문제가 있습니다. –
유효한 URL에 대한 사양을 사용하십시오. 정규식은 16k 바이트를 넘지 않아야합니다. – sln