2017-11-14 4 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アドレスです。私は唯一の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}) 

数字に一致する各キャプチャグループは3のように1桁限り少ないかなど、多くの一致することができるので、正規表現エンジンは見たことが問題最初の1172)で、それが有効であることが判明した後、.(任意の文字)とマッチしてみて、数字7が見つかりませんでした。 nfs://172.1.1:2049

、あなたの正規表現における第二キャプチャグループは、IPアドレスの最初の1にマッチした、.は、7にマッチした第三のキャプチャグループはそうで2にマッチした...と。

ここで試してください:https://regex101.com/r/TNXDiQ/1

関連する問題