一个斜杠加上一个字母的形式,称为转义字符。为什么会有转义字符这个东西呢?因为我们的键盘很小,没法把所有的字符(包括特殊字符)全部排列在有限的空间里。因此如果我们想要使用这些特殊的字符,就得使用转义字符进行转义。可以理解为转义字符(斜杠+键盘上某个可见字符)被映射成了一个特殊字符。
如何在正则表达式中正确使用转义字符(也就是题目中说的斜杠)是一个比较容易犯错的地方。
下面以匹配空格为例进行说明。
如果我们想匹配空格,得使用元字符'\s'。
但是,我们不能直接在代码中使用'\s',因为'\s'会被js解释器转义,导致new RegExp()真正接收到的参数是's',而不是'\s'。
(至于为啥转义字符'\s'映射的是字符's',我想可能是js解释器里面就是没有给'\s'安排一个特殊字符吧。而像'\b'映射的特殊字符是'','\n'映射的是一个换行符)。
var r = new RegExp('\s'); var s = " "; console.log(s.match(r));// null
为了让new RegExp()接收到的是'\s',我们应该对'\'进行转义:
var r = new RegExp('\\s'); var s = " "; console.log(s.match(r));// [" ", index: 0, input: " ", groups: undefined]