可以请任何人告诉我这个正则表达式有什么问题吗?
((?:(?: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作为捕获组
谢谢
答案 0 :(得分:12)
除非你真的,真的必须进行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字符串的要求,而不是正则表达式的要求,所以我把它们排除了。