无法使我的正则表达式匹配

Nic*_*lai 0 javascript regex

我在javascript中的正则表达式有些麻烦.我有以下代码,我认为应该匹配,但事实并非如此.

var rgx = new RegExp("{\d+:(\d+)}");

if (rgx.test("{0:00000}") == true) {
    alert("match");
}
else
{
    alert("no match");
}
Run Code Online (Sandbox Code Playgroud)

我不确定我是否应该在这里使用test().我真的想抓住这个组,在我的正则表达式中,但exec()似乎给了我相同的结果.

那么我做错了什么?

sya*_*ani 5

问题是您需要转义正则表达式中的\字符:

var rgx = new RegExp("{\\d+:(\\d+)}");
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用文字语法:

var rgx = /{\d+:(\d+)}/;
Run Code Online (Sandbox Code Playgroud)

要捕获结果,您还应该使用.match函数而不是test或exec.如果它不匹配,它将返回null,如果匹配则返回至少一个元素的数组.