Javascript 使正则表达式匹配时遇到问题
我的正则表达式在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()似乎给了我同样的结果 那么我做错了什么 问
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构造函数很少是必需的,并且会与所有必需的转义混淆。