我正在尝试使用javascript正则表达式进行一些匹配,我发现了一个非常不寻常的行为,我希望有人可以解释。
我想要匹配的字符串是:“0(IR)”,代码块是
finalRegEx = new RegExp("[0-9]");
match = finalRegEx.exec(str);
除了当我输入“\ d”而不是“[0-9]”时,它没有找到匹配项。我真的很困惑。
答案 0 :(得分:4)
如果您使用 RegExp 与"\d"
构建正则表达式,"\d"
将只生成"d"
。使用两个反斜杠来转义斜杠,如"\\d"
或仅使用regular expression literals /…/
代替:
match = /\d/.exec(str)
答案 1 :(得分:3)
你需要转义它,因为你正在使用构造函数,否则它会按字面意思匹配d
:
new RegExp('\\d').test('1')
new RegExp
应仅用于动态匹配。否则使用文字:
var foo = /\d/;
foo.test(1)
答案 2 :(得分:0)
您可能需要转义反斜杠:finalRegEx = new RegExp("\\d");