java中的一般url模式

时间:2014-07-15 21:05:00

标签: java regex url

我需要一个能够识别纯文本中所有网址的网址格式。现在我有一个在Java中工作正常(使用Pattern): (“(@)(HTTP(S):???//)[A-ZA-Z_0-9 \ - ] +(\ \ W [A-ZA-Z_0-9 \ - ] +)+(/ [#&安培;?\ n \ - = \ + \%/ \,\ W] +)“)

它识别大多数网址,例如:

http://www.aaa.com

https://www.aaa.com

www.aaa.com

aaa.com

www.aaa.com/abcd/asdf?a=12

但它无法识别端口号的网址,如www.aaa.com:8000或www.aaa.com:8000/asdf

任何正则表达式专家都可以帮助我解决这个问题,使上述模式识别带有端口号的URL吗?

1 个答案:

答案 0 :(得分:0)

我猜你可以挤进(:\d+)?

 # (@)?(http(s)?://)?[a-zA-Z_0-9\-]+(\.\w[a-zA-Z_0-9\-]+)+(:\d+)?(/[#&\n\-=?\+\%/\.,\w]+)?
 # "(@)?(http(s)?://)?[a-zA-Z_0-9\\-]+(\\.\\w[a-zA-Z_0-9\\-]+)+(:\\d+)?(/[#&\\n\\-=?\\+\\%/\\.,\\w]+)?"

 ( @ )?
 (
      http
      ( s )?
      ://
 )?
 [a-zA-Z_0-9\-]+ 
 ( \. \w [a-zA-Z_0-9\-]+ )+
 ( : \d+ )?
 ( / [#&\n\-=?\+\%/\.,\w]+ )?