亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        詳解JavaScript正則表達式之分組匹配及反向引用

        字號:


            這篇文章主要介紹了詳解JavaScript正則表達式之分組匹配及反向引用 的相關(guān)資料,需要的朋友可以參考下
            語法
            元字符:(pattern)  作用:用于反復(fù)匹配的分組
            屬性$1~$9  如果它(們)存在,用于得到對應(yīng)分組中匹配到的子串 
            \1或$1  用于匹配第一個分組中的內(nèi)容
            \2或$2  用于匹配第一個分組中的內(nèi)容
            ...
            \9或$9  用于匹配第一個分組中的內(nèi)容
            用法示例
            var reg = /(A+)((B|C|D)+)(E+)/gi;//該正則表達式有4個分組
            //對應(yīng)關(guān)系
            //RegExp.$1 <-> (A+)
            //RegExp.$2 <-> ((B|C|D)+)
            //RegExp.$3 <-> (B|C|D)
            //RegExp.$4 <-> (E+)
            以上的代碼也同時給出了$1~$9的用法
            $1~$9是正則表達式預(yù)定義的靜態(tài)屬性,通過RegExp.$1引用
            分組嵌套關(guān)系說明
            上述代碼也可以說明分組的嵌套關(guān)系
            //測試環(huán)境 Chrome瀏覽器
            var str = "ABCDE";
            var reg = /(A+)((B|C|D)+)(E+)/gi;
            str.match(reg);//輸出:["ABCDE"]
            reg.exec(str,'i');//輸出:["ABCDE", "A", "BCD", "D", "E"]
            RegExp.$1;//輸出:"A"
            RegExp.$2;//輸出:"BCD"
            RegExp.$3;//輸出:"D"
            RegExp.$4;//輸出:"E"
            這樣就可以很明白的看出分組的嵌套關(guān)系了
            總結(jié)來說:大的分組中存在小的分組時,小的分組是排在該大分組后面的分組,以此類推
            第二部分
            這部分主要講解類似于"\1"這個東西的用法
            分組匹配之反向引用
            語法
            元字符 \1~\9  作用:用來表示前面以匹配的字符或分組的一個引用
            用法示例
            上面說的可能有些拗口,下面給一個例子:
            //一般情況,當(dāng)我們想匹配任意兩個相同的字符(復(fù)雜一點就是兩個相同的分組)時,往往可以借助下面的寫法
            //說明:
            //(\w)用來匹配任何除了換行和制表符的字符, 而\1是對(\w)的一個引用, 所以你可以理解成: (\w)\1 就是(\w)(\w)
            //但是,
            //(\w)\1 和 (\w)(\w)的不同之處在于, (\w)(\w)表示任意兩個連續(xù)的字符, 比如Ac, MM, K9, 都可以,
            // 但(\w)\1只能是AA, CC, 99 這樣連續(xù)相同的字符
            //所以, 你可以這樣理解, \1 是對(\w)的一個實例化引用, 當(dāng)(\w) 匹配到A時, \1 被表達成A, 當(dāng)(\w)匹配9時, \1 被表示成9
            //說了這么多, 可能有些廢話, 下面這個例子就很好理解了
            var str = "AA Am 99";
            var reg = /(\w)\1/g;
            str.match(reg);//輸出: ["AA", "99"]
            所以, 參照上邊我所引用的文章中給出的 "關(guān)鍵字搜索高亮顯示的正則表達用法" 的例子, 我給出自己改進的小的DEMO
            雖然這個DEMO沒有用到任何的關(guān)于反向引用的知識點::>_<::
            //測試環(huán)境 Chrome瀏覽器
            var key = "keywords";//搜索的關(guān)鍵字
            var text = " I am a text, and I have a keywords before this";//待匹配的文本
            var reg = new RegExp("("+key+")","g");
            text.replace(reg,"<span style='color:red'>$1</span>");//輸出: " I am a text, and I have a <span style='color:red'>keywords</span> before this"
            下面給大家詳細介紹下正則表達式之反向引用
            示例1:
            public static void main(String[] args) { 
             String s="99-3933"; 
             boolean b=Pattern.matches("([\\d])\\1[-]([3])\\1\\2{2}", s); 
             System.out.println(b); 
            }
            反向引用,匹配重復(fù)的數(shù)字
            ([\d])====>\1
            ([3])====>\2
            示例2:
            public class test { 
             public static void main(String[] args) { 
              String s="99-393399-3933"; 
              boolean b=Pattern.matches("(([\\d])\\2[-]([3])\\2\\3{2})\\1", s); 
              System.out.println(b); 
             } 
            }