我正在尝试搜索以HTTP开头的URL的普通旧字符串,但是我发现的所有正则似乎在JavaScript中不起作用,我似乎也无法在JavaScript中找到这个示例。

这是我想使用的 这里这里:

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

但是当我尝试运行它时,我会得到“意外的令牌|”错误。

有帮助吗?

解决方案

好的,评论似乎还不够,很难找到完整的答案。我重写了整个适当的正格:(测试,效果很好)

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

i 最后,意味着“忽略案例”,因此此式正则是必要的。

其他提示

您正在使用 / 作为您的正则定界符,也正在使用 / 在正则(www之前)中,因此,正则施气实际上是在第一个 / www之前终止的。将其更改为:

var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
                                     ^^^^ escape here
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top