Regex JSON架构模式验证失败
我在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“作为无效字符串。这
"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组。