Javascript RegEx -无效量词



我看了其他的帖子,但是没有一个对我有帮助。

所以,我试图匹配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
    );

最新更新