我试图验证一个表单字段,用户可以在其中输入多个DNS条目。我目前拥有验证单个条目的IP地址的正则表达式,但如果用户可以使用",“作为分隔符添加多个DNS条目,则不会。
示例(希望验证两个条目):
192.168.1.1,198.168.1.2
Regex: /^(((010-9{1,2})|(20-4)|(250-5)).){3}((0-10-9{1,2})|(20-4)|(250-5))$/

发布于 2017-02-25 22:43:07
确实不太确定这是个好主意,因为它很难读懂,但这应该可以完成以下工作:
^(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5]))(,\s*(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])))*$https://regex101.com/r/0uwu2w/1
正如其他人所指出的,在字符串上进行分割并匹配单个IP地址可能是一个更好的主意。
更重要的是,即使匹配单个IP,也可以使用拆分并检查每个组件是否是0-255范围内的一个数字。
发布于 2017-02-25 22:37:23
我建议不要尝试验证整个字符串,而只是在,上拆分字符串并单独验证每个字符串。
这给您留下了一个更简单的正则表达式,代价是增加了一些代码。此外,如果用[0-9]替换,正则表达式中的任何\d都会更简单。
/^((([01]?\d{1,2})|(2[0-4]\d)|(25[0-5]))[.]){3}(([0-1]?\d{1,2})|(2[0-4]\d)|(25[0-5]))$/
https://stackoverflow.com/questions/42462311
复制相似问题