咱們首先來看以下代碼,在瀏覽器中輸出的是什麼?正則表達式
// 在瀏覽器中輸出的 console.log('\\'); // 輸出 \ console.log('\\\\'); // 輸出 \\
一:js正則直接量語法對 反斜槓的含義瀏覽器
1.1 \. 一個反斜槓加點號(.) spa
var reg1 = /^\.$/g; console.log(reg1.test('.')); // 輸出 true, 由於 \. 是對元字符.進行轉義,所以匹配字符串中的. console.log(reg1.test('a')); // 輸出false \. 轉義後只能匹配字符串中的. ,再也不是元字符匹配任意單個字符了
1.2 \\. 兩個反斜槓加 (.)code
在js正則表達式中,兩個反斜槓加點號(.), 兩個反斜槓會原樣輸出 \\ 字符串。元字符 . 匹配任意字符。對象
var reg2 = /^\\.$/g; console.log(reg2.test('\a')); // false console.log(reg2.test('\\a')); // true console.log(reg2.test('a')); // false console.log(reg2.test('\\ab')); // false console.log(reg2.test('\\.')); // true
1.3 \\\. 三個反斜槓和點號(.)blog
在js正則表達式中,三個反斜槓和 . ,前兩個反斜槓匹配兩個反斜槓,後面的 \. 是對元字符.號進行轉義,所以只能匹配字符串中的 . 號,不能匹配任意一個字符。字符串
var reg3 = /^\\\.$/g; console.log(reg3.test('\a')); // false console.log(reg3.test('\\.')); // true console.log(reg3.test('a')); // false console.log(reg3.test('\\a')); // false
1.4 \\\\. 四個反斜槓加點號(.)console
在js正則表達式中,四個反斜槓匹配四個反斜槓,而後後面的點號是匹配任意的字符,除點以外。class
var reg4 = /^\\\\.$/g; console.log(reg4.test('\\a')); // false console.log(reg4.test('\\\.')); // false console.log(reg4.test('\\\a')); // false console.log(reg4.test('\\\\a')); // true console.log(reg4.test('\\\\.')); // false console.log(reg4.test('\\aa')); // false
2. JS中RegExp對象對反斜槓的含義test
2.1 兩個反斜槓加點號(.)
兩個反斜槓加點的含義是:全局匹配字符串中帶有點號的。找到的話,就返回true,不然的話,返回false, 首先兩個反斜槓在正則 RegExp,返回一個反斜槓 \.
所以一個 反斜槓 \. 就是對元字符 . 進行轉義。所以只能匹配 . 號了。
以下代碼:
var reg11 = new RegExp('\\.', 'g'); console.log(reg11); // 輸出 /\./g console.log(reg11.test('.')); // true console.log(reg11.test('\.')); // false console.log(reg11.test('\a')); // false console.log(reg11.test('.a')); // true console.log(reg11.test('n.a')); // true
2.2 三個反斜槓加點號(.)
三個反斜槓和兩個反斜槓的含義同樣的。
var reg12 = new RegExp('\\\.', 'g'); console.log(reg12); // 輸出 /\./g console.log(reg12.test('.')); // true console.log(reg12.test('\.')); // false console.log(reg12.test('\a')); // false console.log(reg12.test('.a')); // true console.log(reg12.test('n.a')); // true
2.3 四個反斜槓加點號(.)
四個反斜槓加點號的含義是:在RegExp對象後,會返回 /\\./g, 而後是匹配字符串 \\ , 點號(.) 是元字符匹配任意的字符。
var reg12 = new RegExp('\\\\.', 'g'); console.log(reg12); // 輸出 /\\./g console.log(reg12.test('.')); // false console.log(reg12.test('\.')); // false console.log(reg12.test('\a')); // false console.log(reg12.test('.a')); // false console.log(reg12.test('n.a')); // false console.log(reg12.test('\\a')); // true console.log(reg12.test('\\aaaa')); // false console.log(reg12.test('\\.')); // true