我看了其他的帖子,但是没有一个对我有帮助。
所以,我试图匹配url在javascript字符串与regex,它完美地工作在regex101,但在javascript失败。
var matches = feed.content.match(
'/((http|https|ftp)://([a-zA-Z0-9.-_%]+/?){1}([a-zA-Z0-9.-_]+/?)*(?[a-zA-Z0-9.-_%+=&:]*)*)/ig'
);
和firebug返回me
SyntaxError: invalid quantifier
正如在注释中指出的,您应该删除包含regex的单引号。除此之外,我还建议对表达式本身做一些修改:
((https?|ftp)://([w.%-]+/?)([w.-]+/?)*(?[w.%+=&:-]*)*)
s
后面的?
表示它是可选的,因此http和https都将匹配。w
是单词字符类,因此对A-Za-z0-9_
的描述要简明得多。没有必要转义所有的符号,但一个有用的技巧是将-
放在字符类的末尾,这样它就不会被解释为两个字符之间的范围。{1}
不是必需的,因为这是默认行为。
更新于regex101
您正在将正则表达式作为字符串传递-只需去掉外部引号。
var matches = feed.content.match(
/((http|https|ftp)://([a-zA-Z0-9.-_%]+/?){1}([a-zA-Z0-9.-_]+/?)*(?[a-zA-Z0-9.-_%+=&:]*)*)/ig
);