我正在尝试搜索以 http 开头的 url 的普通旧字符串,但我发现的所有正则表达式似乎都不适用于 javascript,我似乎也无法在 javascript 中找到这样的示例。
var test = /\b(?:(?:https?|ftp|file)://www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
但是当我尝试运行它时,我得到“Unexpected token |” 错误。
我正在尝试搜索以 http 开头的 url 的普通旧字符串,但我发现的所有正则表达式似乎都不适用于 javascript,我似乎也无法在 javascript 中找到这样的示例。
var test = /\b(?:(?:https?|ftp|file)://www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
但是当我尝试运行它时,我得到“Unexpected token |” 错误。
好的,评论似乎还不够,很难找到完整的答案。我重写了整个正确的正则表达式:(经过测试,效果很好)
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