【轉】JS-正則表達式的反向引用


原文:https://blog.csdn.net/qq_43161149/article/details/82928324

js 正則表達式的反向引用        \1 

 

https://regexper.com/

 

分析一下這個正則表達式的含義: /(?=(YYYY|YY|MM|DD|HH|mm|ss|ms))\1([:\/]*)/

 

 

————————————————————————————————————————

選擇字符:|

            com|cn|edu   ---  選擇其中一個(含有其中一個就能匹配成功)


子表達式:用()包圍的就是子表達式

            str = "((/d)(/w))"

            第一個子表達式:((\d)(\w))

            第二個子表達式:(\d)

            第三個子表達式:(\w)

            子表達式:以第一個出現的 ( 為第一個表達式

        
        捕獲:將匹配到的子表達式保存在RegExp對象中

            RegExp.$1:保存第一個子表達式

            RegExp.$2:保存第二個子表達式

            RegExp.$3:保存第三個子表達式
            ...


        反向引用:調用捕獲到的值

            \1:指向RegExp.$1

            \2:指向RegExp.$2

            \n:指向RegExp.$n
    
例子:   

    
匹配連續相同的三個數字
        

  1.  
    var str = 'ooo111ooo222ooo333ooo123';
  2.  
     
  3.  
    var reg = /(\d)\1\1/g;
  4.  
     
  5.  
    var result = str.match(reg);
  6.  
     
  7.  
    console.log(result);//[111,222,333]


匹配類型為abab的數字
        

  1.  
    var str = 'ooo1212ooo2323ooo3434ooo1234';
  2.  
     
  3.  
    var reg = /(\d)(\d)\1\2/g;// \d匹配數字,\1對應的是第一個表達式(\d),\2對應的是第二個表達式(\d),g是全局匹配
  4.  
     
  5.  
    var result = str.match(reg);
  6.  
     
  7.  
    console.log(result);


匹配標簽內的內容
      

  1.  
    var str = 'ooo<div>hello world!</div>234';
  2.  
     
  3.  
    var reg = /<(\w+).*<\/\1>/g;
  4.  
     
  5.  
    var result = str.match(reg);
  6.  
     
  7.  
    console.log(result);

分析
 \w:  查找字母、數字、下划線
 \w+:  匹配查找至少一個\w的字符串
.:  查找單個字符除了換行符和行結束符
.*:  匹配查找至少零個.的字符串
\/:  因為/為特殊字符,所以需要用轉義符\
\1:  反向引用(\w+)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM