經常使用的修飾符
i: ignoreCase 忽略大小寫匹配
m: multiline 多行匹配
g: global 全局匹配
複製代碼
經常使用特殊元字符
\d 是0-9之間的一個數字
\D 非0-9之間的任意字符
\w '數字,字母,下劃線'中任意一個 >>[0-9a-zA-Z_]等價於\w
\W 匹配除了'數字,字母,下劃線'中任意一個
\s 匹配任意一個空白字符(包括\t製表符[TAb鍵四個空格] 換行符\n)
\S 匹配除了空白字符 (空格 製表符\t 換行符)
\b 匹配邊界符 'bai' (b左邊和i右邊就是邊界) 'bai-du'(b左邊,u右邊,i右邊,d左邊)
\B 匹配除了邊界符
\n 匹配一個換行符
\ 轉義字符(把一個普通字符轉譯爲特殊字符,例如:\d,把一個特殊含義的轉換爲普通意思,例如:\. 此外的.就不是任意字符,而是一個小數點。)
. 不單單是小數點,表明除了\n之外的任意字符。
^ 以某個元字符開頭
$ 以某個元字符結尾
x|y x或y中的任意一個
[xyz] x或y或z中的任意一個
[^xyz] 除了x\y\z之外的任意字符
[a-z] 獲取a-z中的任意字符([0-9] 等價於\d ...)
[^a-z] 除了a-z中的任意字符
() 正則分組
(?:) 當前分組只匹配不捕獲
(?=) 正向預查
(?!) 負向預查
量詞元字符:
? 表明出現0到1次
* 表明出現0到屢次
+ 出現1到屢次
複製代碼
1.中括號中出現的元字符通常都是表明自己含義的
2.中括號中出現的兩位數,不是兩位數,而是兩個數字中任意一個
列:
let reg = /^[18]$/;
console.log(reg.test('18'));
console.log(reg.test('1'));
console.log(reg.test('8'));
let reg = /^[.]+$/;
let reg = /^.+$/;
console.log(reg.test('n'));
console.log(reg.test('1'));
console.log(reg.test('...'));
let reg = /^[12-65]$/;
console.log(reg.test('13'));
console.log(reg.test('65'));
let reg = /^[\d]$/;
console.log(reg.test('0'));
console.log(reg.test('d'));
複製代碼
正則分組捕獲
let reg = /^(1|[89])|([2-5]|\d)|(6[0-5])$/
let reg = /^\[Object, .+\]$/
let reg = /^(a-z)(a-z)\2\1$/;
console.log(reg.test('oppo'));
let reg = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{2})(\d)(\d|X)$/;
console.log(reg.exec('130826199102175313'))
複製代碼