正則表達式基礎總結

定義方式

// 定義一個正則表達式有兩種方式:

let reg1 = new RegExp(/abc/);
let reg2 = /abc/;

// 但我們平時使用的方式還是第二種,就像我們初始化一個數組的時候是使用第一種而不是第二種的構造式

let ary1 = new Array(1,2,3);
let ary2 = [1,2,3];

匹配包含固定字符串

首先來一個最簡單的正則,匹配包含字符串abc

let reg = /abc/;
console.log( reg.test( 'ab' ) ); // false
console.log( reg.test( 'ac' ) ); // false
console.log( reg.test( 'abc' ) ); // true
console.log( reg.test( 'abcd' ) ); // true

// 'abc'必須是連續的,'acbd'也是不可以
console.log( reg.test( 'acbd' ) ); // false

開始和結束的邊界符 ^ $

匹配輸入字符串的開始位置:^
匹配輸入字符串的結束位置:$

let reg1 = /^abc/; // 匹配以 abc 字符串爲開始的字符
let reg2 = /abc$/; // 匹配以 abc 字符串爲結尾的字符

let reg = /^abc$/; // 精確匹配字符串必須是 abc
console.log(reg.test( 'abc' )); // true
console.log(reg.test( 'abcd' )); // false
console.log(reg.test( 'aabcd' )); // false
console.log(reg.test( 'abcabc' )); // false

字符類

[]:表示有一系列字符可供選擇,只要匹配其中一個就可以了

let reg = /[abc]/; // 只要包含abc中的任意一個字符就可以匹配
console.log( reg.test('andy') ); // true
console.log( reg.test('baby') ); // true
console.log( reg.test('color') ); // true
console.log( reg.test('red') ); // false

[] 配合 邊界符 ^ $

// 只有是 a 或者 b 或者 c 這三個字符 才返回true
let reg = /^[abc]$/;
console.log( reg.test('aa') ); // false
console.log( reg.test('a') ); // true
console.log( reg.test('b') ); // true
console.log( reg.test('c') ); // true
console.log( reg.test('abc') ); // false
console.log( reg.test('cr') ); // false

字符組合

// 26個英文字符大小寫都可以,但是[]裏面是“或”的關係,只能有一個字符
let reg = /^[a-zA-Z0-9_-]$/;
console.log( reg.test( 'a' ) ); // true
console.log( reg.test( 'A' ) ); // true
console.log( reg.test( '5' ) ); // true
console.log( reg.test( '_' ) ); // true
console.log( reg.test( '-' ) ); // true
console.log( reg.test( '!' ) ); // false

中括號裏面字符 ^ 的用法

// 對比上面的正則,在中括號裏面加入 ^ 符號,意思是:取反
let reg = /^[^a-zA-Z0-9_-]$/;
console.log( reg.test( 'a' ) ); // false
console.log( reg.test( 'A' ) ); // false
console.log( reg.test( '5' ) ); // false
console.log( reg.test( '_' ) ); // false
console.log( reg.test( '-' ) ); // false
console.log( reg.test( '!' ) ); // true

量詞符

*:字符出現0、1、2、3…n次

let reg = /^a*$/; // *:0次 或者 n次
console.log( reg.test('') ); // true
console.log( reg.test('a') ); // true
console.log( reg.test('aaa') ); // true

+:字符出現1次以上

let reg = /^a+$/;
console.log( reg.test('') ); // false
console.log( reg.test('a') ); // true
console.log( reg.test('aaa') ); // true

?:字符出現1次或者0次

let reg = /^a?$/;
console.log( reg.test('') ); // true
console.log( reg.test('a') ); // true
console.log( reg.test('aaa') ); // false

大括號的使用
{3}:字符出現3次
{3,}:字符出現3次或者3次以上
{3,10}:字符出現3次到10次之間,包含3次和10次
注意{3, 10}這種寫法是錯誤的,3和10之間不能有空格

// {3} 重複3次
let reg = /^a{3}$/; // 相當於 /^aaa$/
console.log( reg.test('') ); // false
console.log( reg.test('a') ); // false
console.log( reg.test('aaa') ); // true
console.log( reg.test('aaaa') ); // false
// {3,} 大於等於3次
let reg = /^a{3,}$/;
console.log( reg.test('') ); // false
console.log( reg.test('a') ); // false
console.log( reg.test('aaa') ); // true
console.log( reg.test('aaaa') ); // true
// {3, 16} 大於等於3次 並且 小於等於16次
let reg = /^a{3,6}$/;
console.log( reg.test('') ); // false
console.log( reg.test('a') ); // false
console.log( reg.test('aaa') ); // true
console.log( reg.test('aaaa') ); // true
console.log( reg.test('aaaaaa') ); // true
console.log( reg.test('aaaaaaa') ); // false
發佈了28 篇原創文章 · 獲贊 6 · 訪問量 2018
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章