1
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”]

我究竟做错了什么?

4

1 回答 1

4

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

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

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

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

于 2012-08-09T14:12:21.030 回答