7

请有人告诉我这个正则表达式有什么问题吗?

((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\\:([0-9]{2,5})

为了匹配这个:assfasfas>192.168.1.1:8080192.168.222.43:8286

我需要 192.168.1.1 和 8080 才能被捕获组

谢谢

4

1 回答 1

18

除非你真的,真的必须做 IP 地址验证,否则我建议你简化正则表达式,因为这个野兽太复杂了,不能只匹配“IP 部分”和“端口部分”。我的建议是

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

第 1 组和第 2 组将分别保存 IP 和端口。以上内容已经变得更加复杂,恕我直言,即使是这样简单的事情也足够了:

(\d+\.\d+\.\d+\.\d+):(\d+)

请注意,双反斜杠是 Java 字符串的要求,而不是正则表达式的要求,所以我把它们省略了。

于 2010-05-25T21:48:56.713 回答