一個斜杠加上一個字母的形式,稱為轉義字符。為什么會有轉義字符這個東西呢?因為我們的鍵盤很小,沒法把所有的字符(包括特殊字符)全部排列在有限的空間里。因此如果我們想要使用這些特殊的字符,就得使用轉義字符進行轉義。可以理解為轉義字符(斜杠+鍵盤上某個可見字符)被映射成了一個特殊字符。
如何在正則表達式中正確使用轉義字符(也就是題目中說的斜杠)是一個比較容易犯錯的地方。
下面以匹配空格為例進行說明。
如果我們想匹配空格,得使用元字符'\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]