Regex JSON架构模式验证失败

Regex JSON架构模式验证失败,regex,pattern-matching,jsonschema,Regex,Pattern Matching,Jsonschema,我在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“作为无效字符串。这

我在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“作为无效字符串。

这似乎不是一个明显的问题,但需要转义
字符,因为您正试图逐字匹配该字符。”

此正则表达式带有转义的
和前斜杠:

^(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
匹配。。等等


请在此处尝试:

为什么端口号必须是四位数字?这似乎是个错误。很可能在2-5之间。就目前而言,这应该是可行的。问题在于ip地址。即使我只给出ip的3部分,模式也是匹配的。您使用的是什么语言?Javascript json scema验证。您的问题是,您试图匹配0到255之间的4组数字,但
172.1.1
仅包含3组。