字符串能匹配一般重复字符,比如abdabcaca,执行var str="abdabcaca";
var reg=/(\w\w+).*\1/g;
str.match(reg);//abdab,caca这是可以的 ,但是有一个需求,比如abdabda,我想把ab找出来,然后在找出da,因为/g的全局匹配是从上一次匹配成功的后面开始匹配的,不知道正则表达式能否实现这个需求
var reg=/(\w\w+).*\1/g;
str.match(reg);//abdab,caca这是可以的 ,但是有一个需求,比如abdabda,我想把ab找出来,然后在找出da,因为/g的全局匹配是从上一次匹配成功的后面开始匹配的,不知道正则表达式能否实现这个需求
var reg=/(\w{2})(?=.*\1)/g;
str.match(reg);使用右断言,js正则不支持左断言,用右断言也能完成不少事情
var reg=/(\w+)(?=.*\1)/g;
str.match(reg);
// 首个abd后边又出现过abd,所以abd符合匹配,然后从abd后的字母a开始下一组,只找到了a在后边有出现,所以a(第四个字母,不是第一个)也符合匹配
1楼的是限定为两个字符长度,其他没区别
var arr = [];
for (var i = 0; i < str.length-2; i++) {
var reg=/(\w\w+).*\1/;
var rs = str.slice(i).match(reg);
if (rs && arr.indexOf(rs[0])==-1)
arr.push(rs[0]);
}
alert(arr);