正則表達式
// [A-Z] ? ?查找任何從大寫 A 到大寫 Z 的字符
? ? ? ? /* [a-zA-Z] 表示大小寫的26個英文字母 都能匹配 */
? ? ? ? /* [0-9] ? ?查找任何從 0 至 9 的數(shù)字 */
? ? ? ? /* /[0-9a-zA-Z]/ 表示26個大小寫英文字母和數(shù)字都匹配 */
? ? ? ? /* [] 只要有一個符合都返回true 例如下面*/
? ? ? ? // let reg = /[0-9]/;
? ? ? ? // console.log(reg.test('abc'))
? ? ? ? /* [abc] ? ?查找括號內(nèi)的任意一個字符 */
? ? ? ? /* ^[] 表示以什么開頭 ?*/
? ? ? ? /* []$ 表示以什么結(jié)尾 */
? ? ? ? /* + 表示匹配前面字符串一次或者多次 */
? ? ? ? /* 可以匹配純26個英文小寫的字母 ?*/
? ? ? ? // let reg = /^[a-z]+$/;
? ? ? ? // console.log(reg.test('abcccc'))
? ? ? ? /* 匹配一串字符 包括多個 英文字母 包括大小寫 和數(shù)字 ?*/
? ? ? ? // let reg = /^[a-zA-Z0-9]+$/;
? ? ? ? // console.log(reg.test('BASADasdf123123'))
/* {n,} 至少匹配n 次 ?/^[a-z]{2,}$/ ?*/
? ? ? ? /* 以[]內(nèi)任意一個字母(包括大小寫)或者數(shù)字開頭 */
? ? ? ? // {n,m} ? ?最少匹配 n 次且最多匹配 m 次 /^[a-z]{2,3}$/
? ? ? ? /* {n} ?匹配確定的 n 次 /^\d{2}$/ 要加限定字符,否則2次以上也為true */
// ? ? ? ? // ?匹配前面的子表達式零次或多次 /[a-z]*/ 字母出現(xiàn)與否都為true
// ? ? ? ? ? ? ?匹配前面的子表達式零次或一次/[a-z]?/字母出現(xiàn)0或1次都為true
// 正則有個特性只要匹配了一次都返回true,所以要加限定字符^$
/* [^abc] ? 查找除了括號內(nèi)的任意字符 */
? ? ? ? /* 寫在[]里面的^叫除了 */
? ? ? ? // let reg = /[^abc]/;
? ? ? ? // console.log(reg.test('dfgg'))
判斷是否符合正則
/* 正則對象校驗的兩個方法 */
? ? ? ? /* test 符合返回true 不符合返回false */
? ? ? ? /* exec 符合返回一個數(shù)組 不符合返回null*/
? ? ? ? let reg = /^[a-z]+$/
? ? ? ? console.log( reg.exec('abc') )
元字符
\w ? 匹配數(shù)字、字母、下劃線
\W ? 匹配非數(shù)字、字母、下劃線
?\d ? 匹配數(shù)字
?\D ? 匹配非數(shù)字
\s ? 匹配空白字符(空格 、換行\(zhòng)n 回車\r) 空字符串''不可以
\S ? 匹配非空白字符 (空格 、換行\(zhòng)n 回車\r 空字符串'' 4個返回false
?\n ? 匹配換行符 ?這里只匹配\n 不匹配\r
正則的定義
/* i 執(zhí)行對大小寫不敏感的匹配 */
? ? ? ? // let reg = /[a-z]/i;
? ? ? ? // console.log( reg.test('C') );
? ? ? ? // let reg = new RegExp(/[a-z]/,'i');
? ? ? ? // console.log( reg.test('C') );
? ? ? ? // g 執(zhí)行全局匹配(查找所有匹配而非在找到第一個匹配后停止)
? ? ? ? let str = 'abc1a2c3b';
? ? ? ? console.log( str.match(/a/g) )
? ? ? ? /* [a-z] ? ?查找任何從小寫 a 到小寫 z 的字符 */
? ? ? ? /* 構(gòu)造函數(shù)的方式 */
? ? ? ? /* reg是構(gòu)造函數(shù)RegExp new出來的實例化對象 */
? ? ? ? // let reg = new RegExp(/[a-z]/);
? ? ? ?/* 正則的方法 test() 可以判斷你輸入的字符串是否符合要求
? ? ? ?符合就返回true 不符合就返回false*/
? ? ? ? /* 用字面量的方式來表示正則 */
? ? ? ? // let reg = /[a-z]/;
? ? ? ? // console.log( reg.test('C') );
String驗證正則的方式
// let str = '123abc';
? ? ? ? /* 返回匹配到的第一個字符串的下標(biāo),否則返回-1 */
? ? ? /* ? console.log( str.search(/[a-z]/) ) */ /* ==> 3 */
? ? // ? ?如果沒有找到任何匹配的文本,返回 null
? ? // ? ?否則,它將返回一個數(shù)組(依賴于是否具有全局標(biāo)志 g)
? ? ? ? // let str = 'cc123ab'
? ? ? ? /* console.log( str.match(/[0-9]/) ) ?*/ /*返回 ['1', index: 3, input: 'abc123qwe', groups: undefined] */
? ? ? ?/* ?console.log( str.match(/[0-9]/g) ) */ /* ['1', '2', '3'] ?*/
? ? ? ?/* 返回一個新的字符串 */
? ? ? ? // let str = 'abc123qwe'
? ? ? ? // ? ?let newStr = str.replace('bc','oo');
? ? ? ? // let newStr = str.replace(/[0-9]/,'oo'); =>abcoo23qwe
? ? ? ? // let newStr = str.replace(/[0-9]/g,'oo'); =>abcooooooqwe
? ? ? ? // console.log(newStr);
? ? ? ? // let str = 'a1b2c3d4e5f'
? ? ? ? // // console.log( str.split('-') ) /* 匹配不到會把整個字符串當(dāng)成數(shù)組返回 */
? ? ? ? // /* 以數(shù)字為分隔符來分割 => [a,b,c,d] */
? ? ? ? /* split的第二個參數(shù)表示 分割成幾個數(shù)組的意思 */
? ? ? ? // console.log( str.split(/[0-9]/,5) )