>[success]转义字符(escape)表示为反斜线(\)+字符的形式,共有以下3种情况
【1】因为元字符有特殊的含义,所以无法直接匹配。如果要匹配它们本身,则需要在它们前面加上反斜杠(\\)
```
console.log(/1+1/.test('1+1')); //false
console.log(/1\+1/.test('1+1')); //true
console.log(/\*/.test('*')); //true
console.log(/*/.test('*')); //报错
```
但实际上,并非14个元字符都需要转义,右方括号]和右花括号}不需要转义
```
console.log(/]/.test(']')); //true
console.log(/\]/.test(']')); //true
console.log(/\}/.test('}')); //true
console.log(/}/.test('}')); //true
```
【2】'\\'加非元字符,表示一些不能打印的特殊字符
```
\0 NUL字符\u0000
[\b] 匹配退格符\u0008,不要与\b混淆
\t 制表符\u0009
\n 换行符\u000A
\v 垂直制表符\u000B
\f 换页符\u000C
\r 回车符\u000D
\xnn 由十六进制数nn指定的拉丁字符
\uxxxx 由十六进制数xxxx指定的Unicode字符(\u4e00-\u9fa5代表中文)
\cX 控制字符^X,表示ctrl-[X],其中的X是A-Z之中任一个英文字母,用来匹配控制字符
```
【3】'\\'加任意其他字符,默认情况就是匹配此字符,也就是说,反斜线(\\)被忽略了
```
console.log(/\x/.test('x')); //true
console.log(/\y/.test('y')); //true
console.log(/\z/.test('z')); //true
```
# 双重转义
由于RegExp构造函数的参数是字符串,所以某些情况下,需要对字符进行双重转义
>[success]字符\在正则表达式字符串中通常被转义为\\\
```
var p1 = /\.at/;
//等价于
var p2 = new RegExp('\\.at');
var p1 = /name\/age/;
//等价于
var p2 = new RegExp('name\\/age');
var p1 = /\w\\hello\\123/;
//等价于
var p2 = new RegExp('\\w\\\\hello\\\\123');
```