javascript \ d正则表达式意外行为

时间:2010-07-02 17:49:11

标签: javascript regex

我正在尝试使用javascript正则表达式进行一些匹配,我发现了一个非常不寻常的行为,我希望有人可以解释。

我想要匹配的字符串是:“0(IR)”,代码块是

finalRegEx = new RegExp("[0-9]");
match = finalRegEx.exec(str);

除了当我输入“\ d”而不是“[0-9]”时,它没有找到匹配项。我真的很困惑。

3 个答案:

答案 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");

相关问题