javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > 正则表达式实现字符去重

JS正则表达式实现字符串中连续在一起的字符去重

作者:老布丁~

这篇文章主要给大家介绍了关于JS正则表达式实现字符串中连续在一起的字符去重的相关资料,学会正则表达式对开发者而言是个非常有用的技能,很多功能可以简单的用一句正则来实现,需要的朋友可以参考下

题目

将字符串类似于"aabcdefgaabdd"连续在一起的去重,达到"abcdefgabd"的效果.

var regex = /(.)(?=(\1).*)/g;
var str = "aabcdefgaabdd";
str = str.replace(regex,'');
document.write(str);

思路

通过(.)匹配任意字符,判断当前匹配的字符后面有没有与它相邻的相同字符,若有则将当前字符替换为'';

\1:指反向引用,具体解释如下:

var str = “Is is the cost of of gasoline going up up”;
var patt1 = /\b([a-z]+) \b\1/ig;
document.write(str.match(patt1));

\b([a-z]+)是该表达式的第一个分组,\1是匹配第一个分组匹配到的内容, 也就是所谓的\1引用了第一个()匹配到的内容。
(x)(y)\2 该正则是想匹配到第一个字符是x,第二个字符是y,第三个字符也是y的内容,比如xyy能够被匹配到,但是xya、xyb就不能被匹配到。

下面看下该题目的变形:

题目

将字符串中除第一次出现的不同字符保留外,其余相同字符全部去除;

例:将字符串类似于"aabcdefgaabdd"连续在一起的去重,达到"abcdefg"的效果.

var regex = /(.)(?=.*(\1).*)/g;
var str = "aabcdefgaabdd";
str = str.split('').reverse().join('');
str = str.replace(regex,'').split('').reverse().join('');
document.write(str);

思路

先将字符反转

通过(.)匹配任意字符,判断当前匹配的字符后面有没有与它相同的字符,若有则将当前字符替换为'';

最后将字符串替换后的字符串反转回就行。

补充:关于去除字符串中连续重复字符的两种方法

一、使用正则表达式

quChong("111222333555");
function  quChong(str){
let arr=[];
let obj=str.match(/(\d)\1*/g);//这里以数字为例
for(let i=0;i<obj.length;i++){
let newArr=obj[i].split("");
arr.push(newArr[0]);
}
let s0=arr.toString().replace(/,/g,"");
console.log(s0);
}//输出1235

这种方法首先匹配到连续重复的字符(在本例中是111,222,333,555),再将每一项分割成单独的所需的项;

二、利用数组

function removeRepetition(str) {
		        let result = "",  //空的结果
		        strA =str.split(""), //将字符串进行分割,变成数组
		        strB = [],  //创建空的字符串
		        j=0;
	for(let i=0;i<strA.length;i++){   //对分割好,已变成数组的字符串A进行循环
                 if(strA[i] !=strB[j]){     //判断循环到的A的元素和B的最后一位元素是否相等(因为B是一个空数组)
		         j++;              //j一定要先加1
		         strB[j]=strA[i];
		      }
		      }
		            result=(strB.toString()).replace(/,/g,"");         
		            return result;
		      }
	console.log(removeRepetition("aabbvvaa"));//输出abva

这里是先将字符串分割,进行判断后再依次加入到一个新数组当中;

总结 

到此这篇关于JS正则表达式实现字符串中连续在一起的字符去重的文章就介绍到这了,更多相关正则表达式实现字符去重内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文