正则表达式用于查找URL但不包括URL后的标点符号

时间:2011-06-27 14:26:10

标签: javascript regex url

示例:“我的网站是http://www.abcd.com,您的网站是http://www.def.ghi/jkl .Fred是https://www.xyz.com?还是http://www.xxx.com?abc=def?(我认为他的网站是{{3} }}),但显然不是。“

这应该提取

http://www.mmm.com http://www.abcd.com http://www.def.ghi/jkl https://www.xyz.com http://www.xxx.com?abc=def

注意:它应该假设网址后面的任何标点符号都不是网址的一部分,例如http://www.mmm.com之后的逗号不是网址的一部分。这包括拖尾问号,我实际上已经意识到这可能是网址的一部分。当然,如果问号后面跟着查询字符串数据,它应该被认为是网址的一部分。请注意,网址后面可能跟有多个标点符号,例如(是您的网址http://www.abcd.com)?

网址(以及它们的尾随标点符号,如果有的话)将始终跟一个空格,换行符/返回字符 - 或者它们将是被测试字符串的结尾。

前面会有一个空白字符,或者可能是一个空心括号或括号,如“请访问我的网站(http://abcd.com)”。或者他们会来到字符串的开头。

此正则表达式适用于http,https和ftp。

这是一个Actionscript项目。我相信Actionscript使用与Javascript相同的正则表达式引擎。

谢谢!

2 个答案:

答案 0 :(得分:1)

看看这里:http://www.regexguru.com/2008/11/detecting-urls-in-a-block-of-text/

编辑:shanethehat和divillysausages也提到了这个链接:http://gskinner.com/RegExr/我之前没有见过哪些功能和在线评估功能(换句话说,你可以在不启动编码IDE的情况下调整你的正则表达式,这很棒)。谢谢!

答案 1 :(得分:-1)

首先,滚动自己的正则表达式来解析网址是一个糟糕的主意。根据{{​​3}},你必须想象这是一个常见的问题,有人为它编写,调试和tested库。在解析网址时有很多边缘情况:the RFCs,实际(.museum)与不存在(.jpg)网址,包括international domain names的奇怪标点符号,网址末尾的标点符号等

我看过很多图书馆,他们都有自己的缺点。查看parentheses的比较。

如果你想要一个正则表达式,JavaScript URL parsing libraries here中的那个是非常全面的。

相关问题