需要帮助修复JavaScript正则表达式错误

时间:2011-09-26 17:37:55

标签: javascript regex

我有一个JavaScript问题。

我想创建一个检测给定字符串中的URL的正则表达式。我已粘贴下面的正则表达式。它似乎并未涵盖所有案例,如google.com/index.html?2012 或www.google.com/dir/file.aspx?isc=2012。

关于我需要做些什么才能让它发挥作用的想法,或者我可以使用的更好的正则表达式(来自其他地方)?

("(^|\\s)(((http|https)(:\/\/))?(([a-zA-Z0-9]+[.]{1})+[a-zA-z0-9]+(\/{1}[a-zA-Z0-9\-]+)*\/?))", "i")

1 个答案:

答案 0 :(得分:1)

我使用这个正则表达式,它适用于大多数情况。原始版本在http://daringfireball.net/2010/07/improved_regex_for_matching_urls,我必须对其进行修改,以避免在网址中匹配多个“。”。

/\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`!()\[\]{};:'".,?«»“”‘’]))/gi

如果您希望开头的协议是可选的,请使用此

/\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`!()\[\]{};:'".,?«»“”‘’]))/gi
相关问题