RegEx获取IP地址之间的数字?

时间:2009-07-07 15:23:55

标签: regex

假设你有一个IP地址:74.125.45.100所以它的A.B.C.D

有没有办法使用RegEx分别获得A,B,C?

7 个答案:

答案 0 :(得分:10)

如果只是从IP中提取数字而不是验证IP地址,那么你可以这样做:

[0-9]

但是,我认为一个简单的String.Split(".")将是一个更容易的选择。

答案 1 :(得分:7)

非常简单但丑陋的东西会起作用。每个八位字节给你四个组。

(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})

答案 2 :(得分:6)

  

([0-9] +)。([0-9] +)。([0-9] +)。([0-9] +)

......应该这样做。它不是验证正则表达式,允许每个部分的数字超过255。

这是一个疯狂的验证:

  

\ B(25 [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9])(25 [0-5]。| 2 [0-4] [0-9] | [01] [0-9] [0-9])(25 [0-5] |?2 [0-4] [0-9] | [ 01] [0-9] [0-9])(25 [0-5] |?2 [0-4] [0-9] | [01] [0-9] [0-9] ?)\ b'/ p>

归功于RegexBuddy的最后一个正则表达式。

答案 3 :(得分:4)

/(\d+)\.(\d+)\.(\d+)\.(\d+)/

答案 4 :(得分:2)

正则表达式的第一个停靠点...... RegEx Library

答案 5 :(得分:1)

虽然其他人已指出各种良好的正面表现;请问为什么你必须必须使用正则表达式?这将是缓慢且容易出错的。大多数平台都具有集成的IP地址功能,或提供呼叫inet_aton的方式。

答案 6 :(得分:1)

如果有人需要为(所有可能的)IPv4地址验证RegEx:

([^\d.]|^)([01]{0,1}\d{1,2}|2[0-5][0-5])[.]([01]{0,1}\d{1,2}|2[0-5][0-5])[.]([01]{0,1}\d{1,2}|2[0-5][0-5])[.]([01]{0,1}\d{1,2}|2[0-5][0-5])([^\d]|$)

IP包含在第2,第3和第4个参数中。不使用第一个和最后一个。那些是必要的,否则是错误的IP,如:

999.1.2.3

将被视为“99.1.2.3”。我不确定你是否想让IP以点结尾,例如

1.2.3.4.

如果没有,请将最后一部分更改为([^ \ d。] | $)。我不允许在它前面有任何点。

我仍然认为这个RegEx是一个混乱的怪物:)并且更好的解决方案是使用函数手动验证。