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

Oli*_*ans 0 javascript regex

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

请有人解释为什么只有下面的模式1带有双反斜线" \\d"才能在理论上不起作用.

查看Javascript正则表达式文档后,当您按照此链接时,它们还会包含流氓反斜杠.

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!'); 
}
Run Code Online (Sandbox Code Playgroud)

Rya*_*lis 8

如果引导结束,则不需要在引号中包装正则表达式 /

pattern2 = new RegExp(/^\d{6}$/);

额外\是需要的,因为它逃脱了另一个\

  • 换句话说,当您使用字符串文字创建RegExp时,首先评估该字符串文字并使用结果.由于斜杠是转义字符,因此它被删除,因此不会传递给RegExp构造函数.因此得到的RegExp正在寻找重复六次的文字d而不是重复六次的数字. (2认同)