{正則表達(dá)式}

  • 定義
    RegExp === Regular Expression :
    一種用來描述字符組合特征匹配模式

  • 作用

    • 替換/刪除文本
    • 測試字符串內(nèi)的模式
    • 根據(jù)模式匹配從字符串中提取一個(gè)子字符串,用來在文本或者輸入字段中查找特定的文字
  • 語法
    var re = / 字符 / 標(biāo)志;

  • 標(biāo)志 可選
    g全局搜索。
    i不區(qū)分大小寫搜索。
    m 多行搜索。
    y 執(zhí)行“粘性”搜索,匹配從目標(biāo)字符串的當(dāng)前位置開始,可以使用y標(biāo)志。

  • 常見字符
    \d 表示數(shù)字字符;等價(jià)于[0-9]
    \w 單詞字符,數(shù)字,下劃線;等價(jià)于[a-zA-Z0-9_]
    \s 空白符;等價(jià)于[\t\n\f\x0B\r]
    [a-zA-Z0-9]單詞字符、字母、數(shù)字
    \b單詞邊界
    . 除了回車和換行外的所有字符;
    *出現(xiàn)0次或多次
    +至少出現(xiàn)一次
    ?出現(xiàn)0次或1次
    x{3}出現(xiàn)3次x
    ^$表示開始和結(jié)尾;
  • 匹配模式
    在整個(gè)表達(dá)式匹配成功的提前下
    • 貪婪模式 :盡可能多的匹配,即一般趨于最大長度匹配。
    • 非貪婪模式:以最少的匹配字符。
  • 使用方式

    正則:

  • test () 方法執(zhí)行一個(gè)檢索,用來查看正則表達(dá)式與指定的字符串是否匹配。
    RegExp.test( str )
    // 返回truefalse

  • **exec() **方法為指定的一段字符串執(zhí)行搜索匹配操作。
    RegExp.exec( str )
    // 返回一個(gè)數(shù)組null

字符串:

  • search() 查找
    查找該字符串對(duì)象與一個(gè)正則表達(dá)式是否匹配
    str.search( regexp )
    // 返回-1匹配項(xiàng)索引
  • replace() 替換
    使用一個(gè)替換值,替換掉一個(gè)匹配模式。
    str.test( Substr , newSubstr )
    // 返回替換之后的字符串

應(yīng)用

  • 去除字符串兩邊的空白字符
    function trim(str) {
    var re = /^\s+|\s+$/g;
    str.replace(re,"");
    return str;
    }
  • 實(shí)現(xiàn) addClass(el, cls)、hasClass(el, cls)、removeClass(el,cls)
    function hasClass(el,cls) {
    var reg=new RegExp('(\s|^)'+cls+'(\s|$)','g');
    return reg.test(el.className);
    }

     function addClass(el,cls){ 
            if(!hasClass(el,cls)){ 
                 el.className=el.className+" "+cls; 
            }
     }
    
     function removeClass(el,cls) { 
            var reg=new RegExp('(\\s|^)'+cls+'(\\s|$)','g'); 
            el.className=(el.className).replace(reg,"");
     }
    
  • 判斷郵箱
    function isEmail(str){
    reg=/(^\w+)@(\w+).com$/g;
    return reg.test(str);
    }

  • 判斷手機(jī)號(hào)
    function isPhoneNum(str){
    reg=/^1[3-8]\d{9}$/;
    return reg.test(str);
    }

  • 判斷合法的用戶名(長度6-20個(gè)字符,只能包括字母、數(shù)字、下劃線)
    function isValidUsername(str){
    reg=/^\w{6,20}$/;
    return reg.test(str)? "合法":"非法";
    }

  • 判斷合法密碼(長度6-20個(gè)字符,只包括大寫字母、小寫字母、數(shù)字、下劃線,且至少包括兩種)
    function isValidPassword(str) {
    if (/^[a-zA-Z0-9_]{6,20}$/.test(str)) {
    return true
    }else{
    return "長度6-20個(gè)字符,包括大寫字母、小寫字母、數(shù)字、下劃線至少兩種"
    }
    }

  • 匹配顏色
    var re = /#\w{6}/g;
    var subj = "color: #121212; background-color: #AA00ef;
    width: 12px; bad-colors: f#fddee #fd2 "
    alert( subj.match(re) ) // #121212,#AA00ef

  • 修改正則表達(dá)式
    原始
    var str = 'hello "hunger" , hello "world"';
    var pat = /".*"/g;--------------------------------->貪婪模式
    str.match(pat); //輸出[""hunger" , hello "world""]

    修改
           var str = 'hello "hunger" , hello "world"';
           var pat = /".*?"/g;--------------------------------->非貪婪模式
           console.log(str.match(pat)); //輸出["hunger","world"]
    
  • 補(bǔ)全正則表達(dá)式
    非貪婪模式
    str = '.. .. .. '
    re = //
    gstr.match(re); // ["", ""]

    貪婪模式
           str = '.. <!-- My -- comment \n test --> .. <!----> .. '
           re = /<!--[^>]*/g; //
           str.match(re); 
    
  • 補(bǔ)全正則表達(dá)式
    非貪婪模式
    var re = /<.+?>/gvar
    str = '<> <a href="/"> <input type="radio" checked> <b>'
    str.match(re) // '<a href="/">', '<input type="radio" checked>', '<b>'
    貪婪模式
    var re = /<[ ^>]+>/gvar
    str = '<> <a href="/"> <input type="radio" checked> <b>'
    str.match(re) // '<a href="/">', '<input type="radio" checked>', '<b>'

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容