Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式-\\d可以工作,但不能\d_Javascript_Regex - Fatal编程技术网

Javascript正则表达式-\\d可以工作,但不能\d

Javascript正则表达式-\\d可以工作,但不能\d,javascript,regex,Javascript,Regex,所以我第一次尝试一些非常基本的正则表达式,我被告知“\d”表示数字匹配 请有人解释一下,为什么只有下面带有双反斜杠“\\d”的模式1在理论上不应该起作用 在查看了Javascript正则表达式文档之后,当您遵循此操作时,它们还包括rogue反斜杠 在JavaScript中,反斜杠\是一个特殊的转义字符。要在JavaScript字符串中表示反斜杠,必须使用两个\\ 请参阅文档如果以/开头和结尾,则不需要将正则表达式括在引号中 pattern2=newregexp(/^\d{6}$/) 需要额外的\

所以我第一次尝试一些非常基本的正则表达式,我被告知“
\d
”表示数字匹配

请有人解释一下,为什么只有下面带有双反斜杠“
\\d
”的模式1在理论上不应该起作用

在查看了Javascript正则表达式文档之后,当您遵循此操作时,它们还包括rogue反斜杠


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


请参阅文档

如果以
/
开头和结尾,则不需要将正则表达式括在引号中

pattern2=newregexp(/^\d{6}$/)


需要额外的
\
,因为它会转义另一个
\

示例:
new RegExp(“^\\d{6}$”)
在console/^\d{6}$/中打印,但new
RegExp(“^\d{6}$”
打印/^d{6}$/换句话说,当您使用字符串文字创建RegExp时,首先计算该字符串文字,然后使用结果。因为斜杠是转义字符,所以它会被删除,因此不会传递给RegExp构造函数。因此,结果RegExp是寻找一个重复六次的文字d,而不是一个重复六次的数字。我不知道为什么有人对此投了反对票。它回答了这个问题。我的答案更为全面。如果我的答案对您有效,如果您将其标记为已接受的答案,我将不胜感激:)
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!'); 
}