我已经制作了这个正则表达式来检查一个字符串是否是一个有效的IP,包括检查每个octel是否在0-255之间(更具体地说,它检查它是否在0-199之间 OR 200 -249 OR 250-255)
((1?\d?\d|2[0-4]\d|25[0-5])\.){3}(1?\d?\d|2[0-4]\d|25[0-5])
更简单的方法是:
(pattern\.){3}pattern
匹配pattern.pattern.pattern.pattern
,使得模式是0到255之间的数字。
我想知道是否有更短的编写此正则表达式的方式,这样pattern
只需编写一次,同时不会影响正则表达式的准确性,如(pattern\.?){4}
。
修改的
看起来像这样:^pattern($|\.(?!$)){4}$
正是我正在寻找的。 p>
答案 0 :(得分:0)
其实是的!从具有复杂模式的一个稍微过于灵活的正则表达式开始:
(pattern\.?){4}
然后应用断言来锁定点:
(?=(\d+\.){3}\d+([^.\d]|$))(pattern\.?){4}
完整的正则表达式将是:
(?=(\d+\.){3}\d+([^.\d]|$)(1?\d?\d|2[0-4]\d|25[0-5])\.){4}
如果一个点可以立即跟随ip,请从前面的字符类中删除点。