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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章