如何修改以下正则表达式:
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.com
和http://website.com
形式的网址发生故障),新手(如我;))变得难以应用任何修改或了解发生故障时的情况。
一个解释得很好的解决方案总是优于其他人提出的解决方案,并且在下一次不可复制=)
答案 0 :(得分:3)
答案 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();
}