JS正則四個反斜杠的含義


我們首先來看如下代碼,在瀏覽器中輸出的是什么?

// 在瀏覽器中輸出的
console.log('\\'); // 輸出 \
console.log('\\\\'); // 輸出 \\

一:js正則直接量語法對 反斜杠的含義

1.1  \. 一個反斜杠加點號(.) 

var reg1 = /^\.$/g; 
console.log(reg1.test('.')); // 輸出 true, 因為 \. 是對元字符.進行轉義,因此匹配字符串中的.
console.log(reg1.test('a')); // 輸出false \. 轉義后只能匹配字符串中的. ,不再是元字符匹配任意單個字符了

1.2  \\.  兩個反斜杠加 (.)

在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  \\\. 三個反斜杠和點號(.)

在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 \\\\. 四個反斜杠加點號(.)

在js正則表達式中,四個反斜杠匹配四個反斜杠,然后后面的點號是匹配任意的字符,除點之外。

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對象對反斜杠的含義

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

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com