正则表达式 - 可以使用新行重复IP地址

时间:2013-12-20 10:57:16

标签: regex

我想知道如何为每行匹配一个IP地址?

我试过这个但是只使用一个新行char来处理单个ip地址。

  

^((([0-9] {1,3})\。?){4} \ N 2)$

示例数据:

35.24.74.12
22.54.12.23

测试网址:http://regex101.com/r/yW9xT7

结果更新

新正则表达式:

  

/ ^(([0-9] {1,3} \。?){4})$ /米

新结果(使用php preg_match_all):

array(3) {
  [0]=>
  array(2) {
    [0]=>
    string(14) "123.234.123.21"
    [1]=>
    string(13) "232.123.21.42"
  }
  [1]=>
  array(2) {
    [0]=>
    string(14) "123.234.123.21"
    [1]=>
    string(13) "232.123.21.42"
  }
  [2]=>
  array(2) {
    [0]=>
    string(2) "21"
    [1]=>
    string(2) "42"
  }
}

新问题:

有三场比赛。我只想要第一个结果。

3 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分:1)

您可以将此正则表达式与m flag (multiline)

一起使用
^([0-9]{1,3}\.){3}[0-9]{1,3}$

答案 2 :(得分:0)

你忘了逃避这个点。这也是你最后如何避免点。

^(([0-9]{1,3}\.){4}[0-9]{1,3})$

更合适的正则表达式只接受0到255之间的数字,如下所示:

[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]

给出了:

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

为了匹配多行,您可以重复上述步骤,并在每次重复之间包含新行,如下所示:

^((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])[\r\n]+)*(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$