Javascript 使正则表达式匹配时遇到问题

Javascript 使正则表达式匹配时遇到问题,javascript,regex,Javascript,Regex,我的正则表达式在javascript中遇到了一些问题。 我有下面的代码,我认为应该匹配,但它不匹配 var rgx = new RegExp("{\d+:(\d+)}"); if (rgx.test("{0:00000}") == true) { alert("match"); } else { alert("no match"); } ​我不确定是否应该在此处使用test()。我真的很想在我的正则表达式中抓住这个组,但是exec()似乎给了我同样的结果 那么我做错了什么 问

我的正则表达式在javascript中遇到了一些问题。 我有下面的代码,我认为应该匹配,但它不匹配

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

if (rgx.test("{0:00000}") == true) {
    alert("match");
}
else
{
    alert("no match");
}
​我不确定是否应该在此处使用test()。我真的很想在我的正则表达式中抓住这个组,但是exec()似乎给了我同样的结果


那么我做错了什么

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

var rgx = new RegExp("{\\d+:(\\d+)}");
或者,您可以使用文字语法:

var rgx = /{\d+:(\d+)}/;

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

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

var rgx = new RegExp("{\\d+:(\\d+)}");
或者,您可以使用文字语法:

var rgx = /{\d+:(\d+)}/;

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

正则表达式存在多个问题:

var rgx = new RegExp("{\d+:(\d+)}");
首先(首先由syazdani指出),必须对反斜杠进行字符串转义:

var rgx = new RegExp("{\\d+:(\\d+)}");
或者最好使用正则表达式文字:

var rgx = /{\d+:(\d+)}/
其次,
{
}
在regex中有特殊含义,应该转义:

var rgx = /\{\d+:(\d+)\}/
第三,正如Ian所指出的,您可能希望确保整个字符串匹配:

var rgx = /^\{\d+:(\d+)\}$/

RegExp#test
返回一个布尔值true/false,无论字符串是否匹配

RegExp#exec
如果字符串匹配,则返回包含匹配项和所有捕获组的数组;如果字符串不匹配,则返回
null

var matches = /\{\d+:(\d+)\}/.exec("{0:000000}");
if(matches){
  console.log(matches[1]); //logs "000000"
}

正则表达式存在多个问题:

var rgx = new RegExp("{\d+:(\d+)}");
首先(首先由syazdani指出),必须对反斜杠进行字符串转义:

var rgx = new RegExp("{\\d+:(\\d+)}");
或者最好使用正则表达式文字:

var rgx = /{\d+:(\d+)}/
其次,
{
}
在regex中有特殊含义,应该转义:

var rgx = /\{\d+:(\d+)\}/
第三,正如Ian所指出的,您可能希望确保整个字符串匹配:

var rgx = /^\{\d+:(\d+)\}$/

RegExp#test
返回一个布尔值true/false,无论字符串是否匹配

RegExp#exec
如果字符串匹配,则返回包含匹配项和所有捕获组的数组;如果字符串不匹配,则返回
null

var matches = /\{\d+:(\d+)\}/.exec("{0:000000}");
if(matches){
  console.log(matches[1]); //logs "000000"
}

您可能希望在开头使用
^
,在结尾使用
$
,以确保字符串完全匹配,而不是子字符串,但这取决于您。您可能希望在开头使用
^
,在结尾使用
$
,确保字符串完全匹配,而不是子字符串-但这取决于您。+1表示文字语法。RegExp构造函数很少是必需的,并且会与所有必要的转义混淆。对于文本语法来说,+1。RegExp构造函数很少是必需的,并且会与所有必需的转义混淆。