我在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()似乎给了我相同的结果.
那么我做错了什么?
问题是您需要转义正则表达式中的\字符:
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,如果匹配则返回至少一个元素的数组.