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}$/中打印,但newRegExp(“^\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!');
}