假设你有一个IP地址:74.125.45.100所以它的A.B.C.D
有没有办法使用RegEx分别获得A,B,C?
答案 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是一个混乱的怪物:)并且更好的解决方案是使用函数手动验证。