在JavaScript中,字符串'\m';完全等于字符串';m';,为什么?

在JavaScript中,字符串'\m';完全等于字符串';m';,为什么?,javascript,string,Javascript,String,console.log('\d'='d');//正确 字符“d”不是一个特殊的字符,为什么javascript要分割转义符号。 在我看来,最好保留转义符号 当我想使用正则表达式完全匹配字符串-'\d'时,这是不可能的! 以下面的代码为例 console.log(RE.test('\d')); // it should log true console.log(RE.test('d')); // it should log false 不幸的是,您无法找到正则表达

console.log('\d'='d');//正确

字符“d”不是一个特殊的字符,为什么javascript要分割转义符号。 在我看来,最好保留转义符号

当我想使用正则表达式完全匹配字符串-'\d'时,这是不可能的! 以下面的代码为例

console.log(RE.test('\d')); // it should log true 
console.log(RE.test('d'));  // it should log false              

不幸的是,您无法找到正则表达式模式

您没有理由在字符串中转义
d
,JavaScript会忽略它。如果需要
\d
则需要转义转义字符:
\\d


另请参见

\d
在正则表达式(数字字符)中有特殊含义,但在字符串中也有特殊含义(转义的“d”字符,与
'd'
完全相同)

任何
/
都会在字符串中创建转义序列。有些是“有用的”(
\n
==新行),有些则毫无用处(`d'='d')

如果需要正则表达式
\d
,可以

1-改用正则表达式文字:
/\d/


2-转义字符串中的
\
'\\d'
,以便Javascript正确理解包含
\
d
两个字符的字符串。

\d
是转义的
d
字符。没有转义序列,所以您只需要将文本
d
作为字符串内容。这看起来像-请关注您试图解决的实际问题,因为转义字符肯定不是它。所以它只是javascript语言的语法。javascript中不存在类似“\d”的字符串。对吗?@quanlili字符串可以有
\d
,但字符串文字不能。如果要在字符串文本中使用
\
,则需要用另一个反斜杠转义该反斜杠。或者使用
String.raw
函数:
let s=String.raw`\d`
是的,我知道了。多谢。我以前没有使用过String.raw
\d
。它可以输出原始字符串。太神了是的,我明白了。多谢,兄弟。