문제
유효한 URI 만 일치하는 정규식을 어떻게 생성합니까?URI에 대한 설명은 다음에서 찾을 수 있습니다. http://en.wikipedia.org/wiki/URI_scheme.부분을 추출 할 필요가 없으며 URI가 유효한지 테스트하기 만하면됩니다.
(선호하는 형식은 .Net RegularExpression) (. Net 버전 1.1)
- 알려진 프로토콜을 확인할 필요가 없으며 유효한 프로토콜 일뿐입니다.
현재 솔루션 : 라코 디스
해결책
이 사이트는 유망 해 보입니다. http://snipplr.com/view / 6889 / regular-expressions-for-uri-validationparsing /
그들은 다음 정규식을 제안합니다 : 라코 디스
다른 팁
Uri.IsWellFormedUriString 이 적합합니까?
URI 사양에 따르면 : <인용구>
다음 줄은 잘 구성된 URI 참조를 구성 요소로 분해하는 정규 표현식입니다.
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
(다른 답변에 제공된 STD66 링크와 동일한 정규식이라고 생각합니다.)
그러나 분석 은 검증 이 아닙니다.URI를 올바르게 확인하려면 URI 용 BNF 를정규식.일부 BNF는 정규 표현식으로 표현할 수 못하지만 이 BNF를 사용하면 수행 할 수 있다고 생각합니다.하지만 그렇게해서는 안됩니다. 엄청나게 엉망이 될 것입니다.라이브러리 기능을 사용하는 것이 좋습니다.
내가 찾은 최선의 가장 확실한 가이드는 다음과 같습니다. http://jmrware.com/articles/2009/uri_regexp/URI_regex.html (질문에 대한 답변은 URI 테이블 항목 참조) <인용구>
RFC3986의 이러한 모든 규칙은 각 규칙에 대한 정규식 구현과 함께 표 2에 재현되어 있습니다.
자바 스크립트 구현은 여기에서 사용할 수 있습니다. https://github.com/jhermsmeier/uri.regex
참고로 URI 정규식은 아래에서 반복됩니다. 라코 디스
RFC 3986 ( https://tools.ietf.org)에 따라 제가 생각 해낸 최고의 정규식/ html / rfc3986 )은 다음과 같습니다.
캡처 그룹
- 구성표
- 권한
- 사용자 정보
- 호스트
- 포트
- 경로
- 검색어
- 조각