JS助記 ----- 正規表示式
正規表示式的建立
一個完整的正規表示式包含 pattern
(模式) 和 modifiers
(修飾符),形如:/模式/修飾符
var reg = /abc/g; // 表示在全域性去匹配 'abc' 這個子串
修飾符
i
表示忽略大小寫的匹配模式g
表示全域性匹配模式
基本用法
// 全域性匹配 'a' 或 'b' 或 'c' 這幾個字元
var reg = /a|b|c/g;
var reg = /[abc]/;
reg.test('defa'); // 返回 true,因為 'defa' 符合該正規表示式
// 忽略大小寫並全域性匹配 'aBc' 或 'def' 這兩個字串
var reg = /aBc|def/ig;
// 轉義字元的使用
var reg1 = /\\/g; // 判斷是否有 '\'
var reg2 = /\+/g; // 判斷是否有 '+'
var reg3 = /\*/g; // 判斷是否有 '*'
方括號的使用
// 忽略大小寫全域性匹配方括號內的字元
var reg = /[123abc]/ig; // 只要原字串包含其中的某個字元就會匹配上
// 檢查原字串中是否包含數字,匹配所有的數字字元
var reg = /[0-9]/g;
// 檢查原字串中是否包含字母,匹配所有的字母字元
var reg = /[A-z]/g; // 忽略大小寫
var reg = /[a-z]/ig;
// 檢查原字串中是否包含字母或數字,匹配所有的數字和字母字元
var reg = /[A-z0-9]/g;
// 檢查原字串中是否包含中文字元,匹配所有的中文字元
var reg = /[\u4e00-\u9fa5]/g; // 4e00 到 9fa5 是中文的 Unicode 碼
// 檢查原字串中是否不包含方括號內的字元,匹配除了放括號內的字元外所有字元
var reg = /[^abc]/g;
量詞的使用
// 是否包含連續出現3次的a字串,匹配字串中 'aaa' 子串
var reg = /a{3}/g;
// 是否包含連續出現 1~3 次的 'abc' 字串
var reg = /(abc){1,3}/g;
// 是否包含連續3個以上的字母字元,匹配字串至少包含3個
var reg = /[A-z]{3,}/g;
// n+ 表示 n{1,}
// n* 表示 n{0,}
// n? 表示 n{0,1}
// 是否以'123'開頭
var reg = /^(123)/g;
// 是否以'123'結尾
var reg = /(123)$/g;
// 檢測一個字串是否為合法手機號
// 首位為1,第二位為3-9,後9位為0-9
var reg = /^1[3-9][0-9]{9}$/g;
// 判斷字串是否為中文字元或英語字母的正規表示式
var reg = /^([\u4e00-\u9fa5]|[A-z]){1,}$/g;
var reg = /^([\u4e00-\u9fa5]|[A-z])+$/g;
// 判斷字串是否為數字
var reg = /^[0-9]{1,}$/g;
var reg = /^[0-9]+/g;
// 匹配所有'is'後面接著 ' all'的子串
var str = "Is this all there is";
var arr = str.match(/is(?= all)/g);
// 匹配所有'is'後面沒有接著 ' all'的子串
var str = "Is this all there is";
var arr = str.match(/is(?! all)/ig);
元字元的使用
/*
任意字元佔位
. 可以表示任意字元
數字字母下劃線佔位
\w 可以表示數字、字母、下劃線,等價於 [A-z0-9_]
\W 非數字、字母、下劃線,等價於 [^A-z0-9_]
數字佔位
\d 表示數字,等價於 [0-9]
\D 非數字,等價於 [^0-9]
空白字元佔位
\s 表示空白字元
\S 非空白字元
單詞邊界佔位
\b 表示單詞邊界
\B 非單詞邊界
特殊符合佔位
\n 表示換行符
\t 表示製表符
\r 表示回車
注意:這裡的佔位表示在正規表示式中的佔位
*/
// 刪除字串中所有字母
var str = '909abcd397sdad116';
str = str.replace(/[a-z]/gi, '');
// 匹配句子中的 child 單詞
var str = 'children child children child'
var arr = str.match(/\bchild\b/g);
// 去除字串開頭和末尾的空格
var reg = /^\s*|\s*$/g;
var str = ' ab c ';
str = str.replace(reg, '');
// 以 換行符、製表符、回車、逗號、空格、減號、/ 、* 、\ 、下劃線 來分割字串
var reg = /[\n\t\r,\s-/\*\\_]+/g;
var str = 'abc,def xyz---omg/bili\\didi/momo*123';
var strArr = str.split(reg);
/*
[
'abc', 'def',
'xyz-omg', 'bili',
'didi', 'momo',
'123'
]
*/
// 判斷輸入的字串是否是標準的郵箱格式
// 規則:
// 1. 以長度至少為3的任意字母、數字、下劃線開頭
// 2. 後面可能緊接著一個 . 然後長度至少為1的任意數字、字母、下劃線
// 3. 接著有一個 @
// 4. 接著就是長度至少為1的任意數字、字母
// 5. 最後以 . 和 長度為{2,5}的字母結尾
var reg = /^\w{3,}(\.\w+)*@{0-9a-z}+(\.[a-z]{2,5})$/ig;
reg.test('90921399@126.moc'); // true
reg.test('k909392221.momo@qq.com'); // true
小結
- 當一個子串匹配完後,該子串相當於刪除,接著往後面匹配
- 有量詞的,是從最大量開始匹配
- 帶上中括號的表示匹配字元
- 中括號結合量詞使用可以匹配任意長度符合規則的子串,且長度是根據指定的最大長度收縮著匹配
- 開全域性g則表示匹配所有符合規則的,不開全域性則只匹配第一個
- split 就算不開全域性也相當於開了全域性
- search 開了全域性也沒用,相當於不開
相關文章
- JS筆記(15): 正規表示式JS筆記
- [js]正規表示式JS
- js正規表示式JS
- js 正規表示式JS
- js正規表示式速查JS
- 常用js正規表示式JS
- JS 的正規表示式JS
- 正規表示式(筆記)筆記
- JS正規表示式入門JS
- JS基礎:正規表示式JS
- JS中的正規表示式JS
- JS金額正規表示式JS
- JS正規表示式驗證JS
- JS正規表示式總結JS
- JS實現正規表示式JS
- js正規表示式基本用法JS
- 實戰JS正規表示式JS
- JS常用正規表示式及驗證時間的正規表示式JS
- js加固之正規表示式學習筆記JS筆記
- 正規表示式速查筆記筆記
- 正規表示式筆記(四)筆記
- 正規表示式筆記(三)筆記
- 正規表示式筆記(二)筆記
- 正規表示式筆記(一)筆記
- js中的正規表示式(1)JS
- JS正規表示式的驗證JS
- JS 活學活用正規表示式JS
- 關於JS的正規表示式JS
- JS之正規表示式詳解JS
- 過目不忘 JS 正規表示式JS
- JS正規表示式使用詳解JS
- js正規表示式例項(整理)JS
- 通過js正規表示式例項學習正規表示式基本語法JS
- 正規表示式
- 正規表示式學習筆記筆記
- 【記錄】正規表示式入門
- 7,正規表示式(perl筆記)筆記
- JS常用正規表示式備忘錄JS