0

我正在尝试搜索以 http 开头的 url 的普通旧字符串,但我发现的所有正则表达式似乎都不适用于 javascript,我似乎也无法在 javascript 中找到这样的示例。

这是我试图从这里这里使用的一个:

var test = /\b(?:(?:https?|ftp|file)://www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;

但是当我尝试运行它时,我得到“Unexpected token |” 错误。

4

2 回答 2

1

好的,评论似乎还不够,很难找到完整的答案。我重写了整个正确的正则表达式:(经过测试,效果很好)

var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i;

最后i的意思是“忽略大小写”,所以这个正则表达式是必要的。

于 2010-09-07T02:12:59.620 回答
0

您正在/用作正则表达式分隔符,并且也在/正则表达式中使用(在 www 之前),因此正则表达式实际上在第一个 / 之前的 www 之后终止。将其更改为:

var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
                                     ^^^^ escape here
于 2010-09-07T01:56:13.727 回答