문제

유효한 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 정규식은 아래에서 반복됩니다. 라코 디스

관심있는 특정 URI가 있거나 STD66 ?

파싱을 위해 이 정규식 을 알려 드리겠습니다.URI.그런 다음 이론적으로 관심있는 모든 요소가 있는지 확인할 수 있습니다.

하지만 bdukes 답변이 더 낫다고 생각합니다.

RFC 3986 ( https://tools.ietf.org)에 따라 제가 생각 해낸 최고의 정규식/ html / rfc3986 )은 다음과 같습니다.

https://regexper.com을 사용한 정규식 흐름도 라코 디스

캡처 그룹

  1. 구성표
  2. 권한
  3. 사용자 정보
  4. 호스트
  5. 포트
  6. 경로
  7. 검색어
  8. 조각
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top