在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
。它可以输出原始字符串。太神了是的,我明白了。多谢,兄弟。