Javascript RegEx - 无效的量词

时间:2014-08-01 13:33:13

标签: javascript regex

我看到其他帖子,但没有一个能帮助我......

所以,我尝试将javascript中的字符串与正则表达式匹配,它在regex101上完美运行但在javascript中失败。

var matches = feed.content.match(
    '/((http|https|ftp):\/\/([a-zA-Z0-9\.\-\_\%]+\/?){1}([a-zA-Z0-9\.\-\_]+\/?)*(\?[a-zA-Z0-9\.\-\_\%\+\=\&\:]*)*)/ig'
    );

萤火虫回报我

SyntaxError: invalid quantifier

请你能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

正如comments中所指出的,你应该删除包含正则表达式的单引号。除此之外,我建议对表达式本身进行一些更改:

((https?|ftp):\/\/([\w.%-]+\/?)([\w.-]+\/?)*(\?[\w.%+=&:-]*)*)

?之后的s表示它是可选的,因此http和https都会匹配。 \w是字符类,因此更简洁地涵盖A-Za-z0-9_。没有必要转义所有符号,但一个有用的技巧是将-放在字符类的末尾,这样它就不会被解释为两个字符之间的范围。 {1}不是必需的,因为这是默认行为。

updated on regex101

答案 1 :(得分:0)

你正在将正则表达式作为字符串传递 - 只需删除外部引号。

var matches = feed.content.match(
    /((http|https|ftp):\/\/([a-zA-Z0-9\.\-\_\%]+\/?){1}([a-zA-Z0-9\.\-\_]+\/?)*(\?[a-zA-Z0-9\.\-\_\%\+\=\&\:]*)*)/ig
    );