JavaScript 正则表达式匹配问题

JavaScript regular expression matching issue

本文关键字:问题 正则表达式 JavaScript      更新时间:2023-09-26
var regExp=new RegExp(''[:bg']([A-Za-z'-'s]+)', 'g');
var text='something [:bg]text1[:en]text2 % something';
console.log(text.match(regExp));

我希望这个片段返回字符串"text1",但它返回以下数组:[":bg", ":en"]

我做错了什么?

使用正则表达式语法创建正则表达式:

var regExp = /'[:bg']([A-Za-z'-'s]+)/g;

否则,您必须将反斜杠加倍。当你从一个字符串开始时,你必须考虑到字符串本身将由JavaScript根据字符串常量语法中嵌入的元字符的规则进行解释。 只有这样,它才会被RegExp()构造函数重新解释为正则表达式。 因此,字符串解析将"吃掉"您的反斜杠,而正则表达式将不同于您的预期。

编辑 — 正如@Rocket在评论中指出的那样,"g"修饰符可能是必需的,也可能不是必需的。