我正在尝试使自己的Regex与*通配符匹配IP,目前我自己的正则表达式是:
^((((250-5|20-4|010-9?)\){3}(250-5|20-4|010-9?))|(((250-5|20-4|010-9?).){1,3}\))$
但是它不像我所希望的那样起作用,我想在这种情况下给出正则表达式。
192.168.1.1 ->有效
192.168.1.* ->有效
192.168.**->有效
192.*->有效
192.168.*.1 ->无效
192.*.1.1 ->无效
192.**.1->无效
*.168.1.1 ->无效
发布于 2020-02-24 13:36:48
一种选择是使用正前瞻来断言下面的3个点带有3位数字或一个*
匹配时,可以将*作为最后一部分和可选部分。
^(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(?=(?:\.(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])|\*)){3}$)(?:\.(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]))*(?:\.\*)*$另一种选择是列出所有备选方案:
^(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])|(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.\*|(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.\*\.\*|\*\.\*\.\*)$https://stackoverflow.com/questions/60376990
复制相似问题