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

Javascript 用于查找URL但不在URL后包含标点符号的正则表达式,javascript,regex,url,Javascript,Regex,Url,示例:“我的网站是,你的网站是。是弗雷德的?还是?(我以为他的网站是),但显然不是。” 这应该是提取的 注意:应该假设url后面的任何标点符号都不是url的一部分,例如后面的逗号不是url的一部分。这包括后面的问号,我意识到实际上可能是url的一部分。当然,如果问号后面跟着查询字符串数据,则应将其视为url的一部分。请注意,url后面可能有多个标点符号,例如(是您的url吗) URL(以及它们后面的标点符号,如果有的话)后面总是跟一个空格,一个换行符/返回字符——或者它们是被测试字符串的结尾

示例:“我的网站是,你的网站是。是弗雷德的?还是?(我以为他的网站是),但显然不是。”

这应该是提取的

注意:应该假设url后面的任何标点符号都不是url的一部分,例如后面的逗号不是url的一部分。这包括后面的问号,我意识到实际上可能是url的一部分。当然,如果问号后面跟着查询字符串数据,则应将其视为url的一部分。请注意,url后面可能有多个标点符号,例如(是您的url吗)

URL(以及它们后面的标点符号,如果有的话)后面总是跟一个空格,一个换行符/返回字符——或者它们是被测试字符串的结尾

前面将有一个空白字符,或者可能是一个开括号或圆括号,如“请访问我的站点()”,或者它们将出现在字符串的开头

此regexp应适用于http、https和ftp

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

谢谢

看看这里:


编辑:Shanetheat和divillysausages还提到了这个链接:我以前没有见过这个链接,它还具有在线评估功能(换句话说,你可以在不启动编码IDE的情况下调整你的正则表达式,这太棒了)。谢谢

首先,使用自己的regexp解析URL是一个糟糕的想法。你必须想象这是一个很常见的问题,有人已经编写、调试过,并为此建立了一个库。在解析URL时,存在大量的边缘情况:、实际的(.museum)URL与不存在的(.jpg)URL、奇怪的标点符号,包括URL末尾的标点符号等

我看过很多库,它们都有缺点。请参阅的比较


如果你想要一个正则表达式,中的一个非常全面。

这是我开始使用的(((https)|(http)|(ftp)):/(*?)([\,!\?;:)\'\“])\124$)。它在URL后跟多个标点符号时失败。我注意到StackOverflow正是我在预览中想要做的(您在下面输入问题文本的地方看到的内容)。我不知道他们的解决方案是否隐藏在Javascript中。我正在尝试解决这个问题。您尝试过使用gskinner正则表达式工具吗?是的。谢谢。我一直在使用他的工具!这似乎有效:这似乎有效:(\b(https?| ftp |文件):\/[-a-Z0-9+&@\\/%?=~!:,。]*[-A-Z0-9+&@#\/%=~\u124;]]我在这里找到了它(我之前搜索过,什么也找不到。如果这是一篇双帖,很抱歉。)是的,我发布的链接中有一篇。看起来是一个很好的资源。谢谢!请确保并查看,在那里你可以实时测试东西。它还有社区提交的文章,可以让你找到正确的方向(也就是说,第一个url是
/((f|ht{1}tp://)[-a-zA-Z0-9:%\+.~#?&/=]+)/g
,这是一个很好的链接。谢谢!我将把它纳入我的回答中,以供子孙后代参考。