JavaScript正则表达式匹配问题

JavaScript正则表达式匹配问题,javascript,regex,Javascript,Regex,我希望此片段返回字符串“text1”,但它返回以下数组: [“:bg”,“:en”] 我做错了什么?使用正则表达式语法创建正则表达式: 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=new RegExp('\[:bg\]([A-Za-z\-\s]+)', 'g');
var text='something [:bg]text1[:en]text2 % something';
console.log(text.match(regExp));
否则,您将不得不加倍反斜杠。当您从字符串开始时,您必须考虑以下事实:字符串本身将由JavaScript根据字符串常量语法中嵌入的元字符的规则进行解释。只有这样,它才会被
RegExp()
构造函数重新解释为正则表达式。因此,字符串解析将“吃掉”您的反斜杠,正则表达式将不是您想要的


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

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

var regExp=new RegExp('\[:bg\]([A-Za-z\-\s]+)', 'g');
var text='something [:bg]text1[:en]text2 % something';
console.log(text.match(regExp));
否则,您将不得不加倍反斜杠。当您从字符串开始时,您必须考虑以下事实:字符串本身将由JavaScript根据字符串常量语法中嵌入的元字符的规则进行解释。只有这样,它才会被
RegExp()
构造函数重新解释为正则表达式。因此,字符串解析将“吃掉”您的反斜杠,正则表达式将不是您想要的


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

这并不能完全解释问题,但您的第二个字符类不包含数字,这将阻止它匹配
test1
中的
1
,这只是我需要实现的一个示例。数字真是个坏主意。谢谢!:)这并不能完全解释问题,但您的第二个字符类不包含数字,这将阻止它匹配
test1
中的
1
。这只是我需要实现的一个示例。数字真是个坏主意。谢谢!:)他可能也不需要
g
修饰符。我在正则表达式中有一个变量,我在当前示例中删除了该变量,因此我将反斜杠加倍,现在可以使用了。非常感谢你!他可能也不需要
g
修饰符。我在正则表达式中有一个变量,我在当前示例中删除了该变量,因此我将反斜杠加倍,现在可以使用了。非常感谢你!