了解此RegEx无效的原因

时间:2016-04-18 18:56:57

标签: regex

^10\.\d+\.\d+\.\d+$/g

所以我正在尝试创建一个命中所有10.x.x.x地址的RegEx。 (所以10.0.0.0/8)

我想出了上面的内容。当我在RegEx测试网站上测试它时(我已尝试了一些),我得不到匹配。

据我所知:

它匹配10.x,然后添加前一个并查找x。,然后是前一个,然后是x。,直到它达到完整的10.x.x.x.但它似乎没有用。

我确信\ d会击中任何数字。

我不知道为什么这会失败,因为它对我来说似乎是正确的。

RegEx测试可能是错误的,还是我错过了什么?

4 个答案:

答案 0 :(得分:3)

^10\.\d+\.\d+\.\d+$模式匹配字符串开头的10,然后是一个点,后跟1+任意数字(x 3次),然后是字符串的结尾。这意味着,此正则表达式可以匹配10.100000.234567.345567

匹配10.xx.xx.xx IPv4地址的正则表达式可以写为

/^10(?:\.(?:2[0-4]\d|25[0-5]|[01]?\d\d?)){3}$/

请参阅regex demo。这是来自Ultrapico Expresso的精简IP地址。

<强>详情:

  • ^ - 字符串开头
  • 10 - 文字10
  • (?:\.(?:2[0-4]\d|25[0-5]|[01]?\d\d?)){3} - 3个序列({3}):
    • \. - 一个文字点
    • (?:2[0-4]\d|25[0-5]|[01]?\d\d?) - 3种替代品:
      • 2[0-4]\d - 2后跟一个来自0-4范围的数字和一个数字(200-249
      • 25[0-5] - 25后跟0-5范围内的数字(250-255
      • [01]?\d\d? - 01(可选由于?)后跟任意1位数和可选的一位数(0-199
  • $ - 字符串结尾

答案 1 :(得分:0)

我宁愿使用这个正则表达式来验证ip地址

  

10. \ d {1,3}。\ d {1,3}。\ d {1,3}

答案 2 :(得分:0)

如果您要匹配的地址类似于此10.123.123.123/1

试试这个

 10\.\d{1,3}\.\d{1,3}\.\d{1,3}

如果你的地址应占据整条线路并且在线路上没有其他空间,那么:

 ^10\.\d{1,3}\.\d{1,3}\.\d{1,3}$

如果你想限制它,那么这将匹配每个值超过255的地址,它会变得更复杂。

答案 3 :(得分:0)

大部分答案都没有解释为什么正则表达式为OP工作。

根据this用于IP地址,但它不是特定的IP地址格式。

  

我添加了m modifier,以便断言(^$)匹配每行的开头和结尾(用于测试多个IP地址)。

如果您正在寻找特定的IP地址格式,那么Wiktor Stribiżew的回答是正确的。