正則中\1的用法---反向引用


1、正則表達式中  “\number” 表示反向引用,表示引用一個捕獲組,需要和小括號 “()” 一起使用

2、正則捕獲組的下標從 0 開始,下標為 0 的組是整個表達式,下標為 1 的表示從左到右開始的第一個左括號所包含的值,后面的數字以此類推

3、捕獲組在匹配成功時,會將子表達式匹配到的內容,保存到內存中一個以數字編號的組里,可以簡單的認為是對一個局部變量進行了賦值,這時就可以通過反向引用的方式,引用這個局部變量的值。

4、反向引用必須要與捕獲組一同使用,如果沒有捕獲組,而使用了反向引用的語法,不同語言的處理方式不一致,有的語言會拋異常,有的語言會當作普通的轉義處理

 

例子:

 
         
let r = 'AAABBCCAAAA DDE666FF'

//
*表示零個或多個,所以該匹配值可以有零個或者多個 // +表示至少一個或多個,所以該匹配值至少一個或者多個 // 注意\w包含數字,以下都要注意這一點 // 正常匹配單個字符 let match1 = r.match(/(\w)/g) console.log('match1 :', match1) // match1 : [ 'A','A','A','B','B','C','C','A','A','A','A','D','D','E','6','6','6','F','F' ]

//
匹配模式:單個字符+第一個括號中的匹配值( * —— 有零個或者多個) let match2 = r.match(/(\w)\1*/g) console.log('match2 :', match2) // match2 : [ 'AAA', 'BB', 'CC', 'AAAA', 'DD', 'E', '666', 'FF' ]

//
匹配模式:單個字符+第一個括號中的匹配值( + —— 至少一個或者多個) let match3 = r.match(/(\w)\1+/g) console.log('match3 :', match3) // match3 : [ 'AAA', 'BB', 'CC', 'AAAA', 'DD', '666', 'FF' ]

//
匹配模式:單個字符+單個數字 // 注意\w包含數字,以下都要注意這一點 // [ 'E6', '66' ] let match4 = r.match(/(\w)(\d)/g) console.log('match4 :', match4) // match4 : [ 'E6', '66' ]

//
匹配模式:單個字符+單個數字+第一個括號中的匹配值( * —— 有零個或者多個) // [ 'E6', '66' ] let match5 = r.match(/(\w)(\d)\1*/g) console.log('match5 :', match5) // match5 : [ 'E6', '66' ]

//
匹配模式:單個字符+單個數字+第一個括號中的匹配值( + —— 至少一個或者多個) // [ '666' ] let match6 = r.match(/(\w)(\d)\1+/g) console.log('match6 :', match6) // match6 : [ '666' ]

//
匹配模式:單個字符+單個數字+第一個括號中的匹配值( * —— 有零個或者多個)+第二個括號中的匹配值( * —— 有零個或者多個) // [ 'E666' ] let match7 = r.match(/(\w)(\d)\1*\2*/g) console.log('match7 :', match7) // match7 : [ 'E666' ]

//
匹配模式:單個字符+單個數字+第一個括號中的匹配值( * —— 有零個或者多個)+第二個括號中的匹配值( + —— 至少一個或者多個) // [ 'E666' ] let match8 = r.match(/(\w)(\d)\1*\2+/g)
console.log('match8 :', match8) // match8 : [ 'E666' ]

 


免責聲明!

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



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