查找格式为http://69.39.233.135:8032的字符串的正则表达式是什么?

时间:2011-11-17 17:09:40

标签: java regex

  

可能重复:
  Validating an IP with regex

我需要正则表达式来查找Java中的以下字符串:

http://69.39.233.135:8032
http://83.133.127.104
http://119.207.75.238:11120

3 个答案:

答案 0 :(得分:4)

此模式将获取所需的结果:

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

使用可选端口匹配http://之后的IP。

请注意,这是对IPv4的简化验证,只会匹配它们是正确的格式而不是有效的格式。并记住添加一个额外的反斜杠来逃避java中的每个反斜杠。

这是java中的一个例子:

String text = "http://69.39.233.135:8032 http://83.133.127.104 http://119.207.75.238:11120";        
String pattern = "(http://\\d{1,3}(?:\\.\\d{1,3}){3}(?::\\d{1,5})?)";

Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(text);
while(matcher.find()) {
    System.out.println(matcher.group());
}

输出:

http://69.39.233.135:8032
http://83.133.127.104
http://119.207.75.238:11120

答案 1 :(得分:0)

我会在不考虑语言的情况下回答,因为它显示了制作正则表达式时的思考方式

  • 字符串以protcol
  • 开头
  • 您希望匹配协议:http://
  • 您有4组用点分隔的数字
  • 你有一个可选的端口,分号是数字
  • Srings在此之后结束

如果你没有考虑到数字必须小于255,那么某些组合是被禁止的,你最终会

 ^http:\/\/(\d+\.){3}(\d+)(:\d+)?$

答案 2 :(得分:0)

这些是IPv4地址;较新的IPv6也会传播。此外,您可以改为编写http://234144234:8080。第二行是保留端口号可选。

"http\\://\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\:\\d+"
"http\\://\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(\\:\\d+)?"