Javascript Regex - \\ d有效,但不是\ d

时间:2014-10-17 15:40:17

标签: javascript regex

所以我第一次尝试了一些非常基本的RegEx,我被告知'\d'表示数字匹配。

请有人解释为什么只有下面的模式1带有双反斜杠“\\d”才有效,理论上它不应该。

查看Javascript正则表达式文档后,当您按照link进行操作时,它们还会包含流氓反斜杠。

var str = "123456",
    pattern1 = new RegExp("^\\d{6}$"),
    pattern2 = new RegExp("^\d{6}$");

if(pattern1.test(str)){
    alert('pattern 1 match!'); 
}else{
    alert('pattern 1 no match!'); 
}

if(pattern2.test(str)){
    alert('pattern 2 match!'); 
}else{
    alert('pattern 2 no match!'); 
}

2 个答案:

答案 0 :(得分:8)

如果您以/结尾并以pattern2 = new RegExp(/^\d{6}$/);

结尾,则无需将正则表达式用引号括起来

\

需要额外的\,因为它会逃避另一个{{1}}

答案 1 :(得分:2)

在JavaScript中,反斜杠\是一个特殊的转义字符。要在JavaScript字符串中表示反斜杠,您必须使用两个\\

请参阅文档at MDN