2017-11-14 3 views
-2

json 스키마에서 아래 패턴을 사용하여 문자열의 유효성을 검사합니다.JSON 스키마 패턴 유효성 검사가 실패했습니다

"pattern": "^(nfs://)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):([0-9]{4})" 

그러나 현재는 검증되지 않은 "NFS를 : //172.1.1 : 2049"유효하지 않은 문자열입니다.

+0

왜 포트 번호는 4 자리입니까? 그것은 오류처럼 보입니다. 그것은 2-5에서 아주 잘 어딘가에있을 수 있습니다. [정규 표현식 테스터] (https://regex101.com)가 작동하는 한이 방법이 효과적입니다. – tadman

+0

문제는 IP 주소입니다. 이 패턴은 ip의 3 부분만을 제공하더라도 일치합니다. –

+0

어떤 언어를 사용하고 있습니까? – CAustin

답변

1

이것은 명백한 문제는 아니지만 문자 그대로 일치시켜야하기 때문에 . 문자를 이스케이프 처리해야합니다. . 탈출 앞으로이 작품을 슬래시로

이 정규식 :

^(nfs:\/\/)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):([0-9]{4}) 

숫자와 일치하는 각 캡처 그룹은 세 가지로 하나의 숫자로 몇이나 많은 일치 할 수 있기 때문에, 정규식 엔진이보고 한 것을 문제 처음에는 1 (172)에서 유효한 것으로 확인한 다음 . (임의의 문자)과 일치하는 문자를 찾은 다음 원하는 숫자가 아닌 7이라는 숫자를 발견했습니다.

nfs://172.1.1:2049에서 정규식에 제 캡처 그룹은 IP 주소 제 1 일치 상기 .7을 일치 제 포획 기 등등 2 일치 .. 그리고.

여기를 시도해보십시오. https://regex101.com/r/TNXDiQ/1

관련 문제