用于ip验证的正则表达式

时间:2015-05-26 08:50:14

标签: javascript ruby regex

我的正则表达式是

^((?:(?:^|\.)(?:\d|[1-9]\d|1\d{2}|2[-4]\d|25[0-5])){4})$

这允许0.0.0.0,但我不想允许0.0.0.0请有人帮助我

4 个答案:

答案 0 :(得分:2)

只需在开头添加一个否定的先行断言。

^(?!0+\.0+\.0+\.0+$)((?:(?:^|\.)(?:\d|[1-9]\d|1\d{2}|2[-4]\d|25[0-5])){4})$

DEMO

答案 1 :(得分:2)

^(?=.*[1-9])((?:(?:^|\.)(?:\d|[1-9]\d|1\d{2}|2[-4]\d|25[0-5])){4})$

您可以通过positive lookahead.查看演示。

https://regex101.com/r/yW3oJ9/8

答案 2 :(得分:0)

可以使用预测来设置长度限制。在这种情况下,它可以非常简洁,因为字符串应该只包含数字和.符号。

因此,我建议使用(?![0.]+$),因为我们只需要检查我们是否没有0和句号,直到最后:

^(
 (?![0.]+$)                  # Here is the look-ahead.
 (?:
   (?:^|\.)
   (?:
      \d|[1-9][0-9]|1\d{2}|2[-4]\d|25[0-5]
   )
 ){4}
)$

请参阅demo

A one-line JS version

^((?![0.]+$)(?:(?:^|\.)(?:\d|[1-9][0-9]|1\d{2}|2[-4]\d|25[0-5])){4})$

答案 3 :(得分:0)

这是作业的一部分吗?

如果没有,我将不使用正则表达式,而更喜欢String#scan:

guess