N-ZOO / everycode

前端每日一练
163 stars 18 forks source link

[js]正则匹配 #7

Open VaJoy opened 8 years ago

VaJoy commented 8 years ago

需求

匹配重复5次以上的字母或数字,删除其剩下最后3位之前的部分

var reg = //TODO:完成正则
var ret = "abbbbbeeee12222222223".replace(reg, "");
console.log(ret);  // abbbeeee12223
bailnl commented 8 years ago
var reg = /([a-zA-Z0-9])\1+(?=\1{3})/g;//TODO:完成正则
var ret = "abbbbbeeee12222222223".replace(reg, "");
console.log(ret);  // abbbeeee12223

提示: \w 是有_

VaJoy commented 8 years ago

@bailnl 只匹配数字字母,不匹配其它符号,.肯定不行

bailnl commented 8 years ago

@VaJoy 我改。 已更新

VaJoy commented 8 years ago

@bailnl :thumbsup:good,那我换一种写法

var reg = /([a-zA-Z\d])((?=\1{4})(\1))+/g
DudeYouth commented 8 years ago

var reg=/([a-z0-9])\1+(?=\1{3})/ig;

VaJoy commented 8 years ago

@YoungPigs 不能用i哦,这样rrrRRRR反而被匹配到了

bluesrocker commented 8 years ago

var str = 'attttt  gggggggggggg 66666bbbb';
var reg = /([a-zA-Z\d])\1+(?=\1{3})/g;
reg.lastIndex = 0;
console.log( str.replace(reg, "") );
//attt  ggg 666bbbb
Jiasm commented 6 years ago

来一个新特性吧,命名捕获组的处理方法

let result = 'abbbbbeeee12222222223'.replace(/(?<tag>[^\W_])\k<tag>{2,}/g, '$<tag>$<tag>$<tag>')
console.log(result)