在字符串文本中检测网址的好方法是什么?

时间:2011-04-25 18:22:41

标签: url language-agnostic

大家好 我有一个可能包含网址的字符串文本(此文本来自表单文本区域) 我想检测这些网址并用标记围绕它们,以便它们在html页面中表示为链接 这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

使用正则表达式。

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

从这里查看更多信息 http://daringfireball.net/2010/07/improved_regex_for_matching_urls

    public boolean isURL(String s){
    return s.matches(" (?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'\".,<>?«»\“\”\‘\’]))");
}

答案 1 :(得分:1)

这是一个很难做到的复杂问题,主要是因为有很多字符在URL中有效,而你常常在其中看到这些字符。

http://www.codinghorror.com/blog/2008/10/the-problem-with-urls.html

编辑:daringfireball.net链接考虑了部分内容,但您可以在博文中了解权衡。