JS正則判斷多個連續相同字符


var reg1 = /(\w)\1\1/g; //判斷2個連續字符
var reg2 = /(\w)\1{2}/g; //判斷3個連續字符
var reg3 = /(\w)\1\1/g;  //判斷3個連續字符

var str = 'aa!@#123AaAaAAA3';

str.match(reg1); // 輸出['aa','AA']
str.match(reg2); // 輸出['AAA']
str.match(reg3); // 輸出['AAA']

//reg2和reg3表達的意思相同


//一般情況,當我們想匹配任意兩個相同的字符(複雜一點就是兩個相同的分組)時,往往可以藉助下面的寫法  
//說明:  
//(\w)用來匹配任何除了換行和製表符的字符, 而\1是對(\w)的一個引用, 所以你可以理解成: (\w)\1 就是(\w)(\w)  
//但是,  
//(\w)\1 和 (\w)(\w)的不同之處在於,  (\w)(\w)表示任意兩個連續的字符, 比如Ac, MM, K9, 都可以,  
// 但(\w)\1只能是AA, CC, 99 這樣連續相同的字符  
  
//所以, \1 是對(\w)的一個實例化引用, 當(\w) 匹配到A時, \1 被表達成A, 當(\w)匹配9時, \1 被表示成9  
  • 上面這段代碼就是匹配一個串裏是否有n個相同連續字符
  •  匹配3個連續相同字符的是(\w)\1{2}這一小段
  • 括號表示組,是配合\1來用的,然後\1表示組裏面第一個匹配到的內容,在我這裏就表示\w表示的那個字符
  • 比如\w是6的話,\1也就表示6;\w表示a的話,\1就表示a
  • {2}表示\1重複2遍,所以也可以寫成(\w)\1\1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章