我看到其他帖子,但没有一个能帮助我......
所以,我尝试将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
请你能帮帮我吗?
答案 0 :(得分:1)
正如comments中所指出的,你应该删除包含正则表达式的单引号。除此之外,我建议对表达式本身进行一些更改:
((https?|ftp):\/\/([\w.%-]+\/?)([\w.-]+\/?)*(\?[\w.%+=&:-]*)*)
?
之后的s
表示它是可选的,因此http和https都会匹配。 \w
是字符类,因此更简洁地涵盖A-Za-z0-9_
。没有必要转义所有符号,但一个有用的技巧是将-
放在字符类的末尾,这样它就不会被解释为两个字符之间的范围。 {1}
不是必需的,因为这是默认行为。
答案 1 :(得分:0)
你正在将正则表达式作为字符串传递 - 只需删除外部引号。
var matches = feed.content.match(
/((http|https|ftp):\/\/([a-zA-Z0-9\.\-\_\%]+\/?){1}([a-zA-Z0-9\.\-\_]+\/?)*(\?[a-zA-Z0-9\.\-\_\%\+\=\&\:]*)*)/ig
);