js或jquery里用正则清除连续重复的字符串和不连续重复的字符串推荐 亲测 原创 收藏

文章标签: 正则
  • :
  • 03-22 17:00
  • :
  • 38次
  • :
  • 0条
  • 1赞

简介在js或jquery里,用正则清除字符串变量里,连续重复或不连续重复的字符串的方法。

站长以前写过一篇关于正则里“重复”的文字,写的非常详细,大家可以先看下:

正则表达式匹配重复的字符串[超详细]附完整实例

本文,站长来说下如何用正则来去除重复的字符串,包括连续重复和不连续的重复。

先说连续重复的字符串,比如aa11bbcc22dd,这就属于连续重复,我们要把这种连续重复的字符串清除,只保留一个,方法是非常简单的:

var str="aa11bbcc22dd";
str=str.replace(/(\w)\1/gi,"$1");
console.log(w_data);  //输出 a1bc2d

这种连续性的重复是最好替换的,没有什么难点;

再来说不连续的重复,比如“jpg,png,gif,jpg”,这样的字符串,明显出现了两次的jpg,属性不连续的重复,那么是否能用正则来替换掉重复的内容呢?

站长找了好多资料,基本上全都说,在这种情况下是不能用正则的,要用数组,但站长自己测试了好久,虽然有些“残缺”,但还是值得拿出来与大家分享的。

在这里不再写出中间站长测试用的各种正则,直接写出最终结果:

//先把字符串最后也加上“,”,让它们在结构上一致
var str="jpg,gif,jpg,png,png,gif,asp,php,asp,jsp,dhd,";
var c=str.replace(/([^,|]+,).*?\1/gi,"$1");
console.log(c);  //jpg,png,gif,asp,jsp,dhd,

上面给出的结果,是站长亲测的,大家可以自己测试一下。

看着好像是没问题,但之所以说它“残缺”,是因为,字符串里,如果出现重复两次以上的,这个正则就不好用了,-_-!

所以,如果你遇到的情况和上面相似,可以拿去用,但如果也不能保证重复的次数大于2,那就还是把字符串转换成数组,通过数组来去重吧!

数组去重看这里:《jquery删除数组中的重复值或元素



您正在找的文章可能是: