2 回答
TA贡献1856条经验 获得超5个赞
对于 JSON,您需要\使用另一个反斜杠来转义每个反斜杠:
((^|\\.)((25[0-5])|(2[0-4]\\d)|(1\\d\\d)|([1-9]?\\d))){4}\\/(?:\\d|[12]\\d|3[01])$
所以在 JSON 模式中,它看起来像:
"pattern": "((^|\\.)((25[0-5])|(2[0-4]\\d)|(1\\d\\d)|([1-9]?\\d))){4}\\/(?:\\d|[12]\\d|3[01])$"
无论如何,您找到的正则表达式(在链接中)与数字分组不太匹配。用几个例子试试 -完全匹配是正确的,但返回的组包括带数字的点或只是点。
如果您想要 IP 地址的所有部分,而不仅仅是完全匹配,那么这里有一个基于此的正则表达式。我已经包含了可选子网掩码的匹配:
^(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]?)
(?:\/(\d|[12]\d|3[01]))?$
(删除我为可读性添加的换行符。)Demo here。只有前 3 个地址应该匹配,其余的不匹配。
如果你只想要完整的匹配,而不是单独的部分,那么使用这个:
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
(?:\/(?:\d|[12]\d|3[01]))?$
添加回答
举报