我正在尝试搜索普通的旧字符串以获取以http开头的网址,但我找到的所有正则表达式似乎都不能在javascript中运行,我也无法在javascript中找到这样的示例。
var test = /\b(?:(?:https?|ftp|file)://www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
但是当我尝试运行它时,我得到“意外的令牌”错误。
答案 0 :(得分:1)
好的,评论似乎还不够,很难找到完整答案。我重写了整个正确的正则表达式:(经过测试,效果很好)
var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i;
结尾的i
表示'忽略大小写',因此这个正则表达式是必要的。
答案 1 :(得分:0)
您正在使用/
作为正则表达式分隔符,并且还在正则表达式中使用/
(在www之前),因此正则表达式实际上在第一个/之前的www之后终止。将其更改为:
var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
^^^^ escape here