用于在Java String中查找URL的正则表达式

时间:2014-05-02 13:01:30

标签: java regex string url

如何修改以下正则表达式:

String URLpattern   = "((https?|ftp|gopher|telnet|file|Unsure|http):((//)|(\\\\))+[\\w\\d:#@%/;$()~_?\\+-=\\\\\\.&]*)"

考虑到以下所有URL表单?

http://www.website.com
https://www.website.com
www.website.com
website.com
http://website.com
https://website.com

编辑: 有许多已经提出的问题解决方案。我可以列出其中一些:

然而,尽管我也尝试了所有这些,但他们都没有提出解释表达式如何以及为何起作用的解释。因此,每当出现故障时(对我而言,website.comhttp://website.com形式的网址发生故障),新手(如我;))变得难以应用任何修改或了解发生故障时的情况。 一个解释得很好的解决方案总是优于其他人提出的解决方案,并且在下一次不可复制=)

2 个答案:

答案 0 :(得分:3)

鉴于您的网站列表,以下正则表达式将起到作用:

(https?://)?(www\.)?\w+\.com

Demo

答案 1 :(得分:0)

试试这个,它运行正常。测试你的所有网址!

private static final String URL_PATTERN = "(@)?(href=')?(HREF=')?(HREF=\")?(href=\")?(http://)?(https://)?" +
        "[a-zA-Z_0-9\\-]+(\\.\\w[a-zA-Z_0-9\\-]+)+(/[#&\\n\\-=?\\+\\%/\\.\\w]+)?";

private Pattern urlPattern =Pattern.compile(URL_PATTERN);

public boolean isURL(String url)
{
    boolean mat = urlPattern.matcher(url.trim().replace(" ","")).matches();
    return urlPattern.matcher(url.replace(" ","")).matches();
}