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

 更新时间:2023年11月22日 11:03:50   作者:老布丁~  
这篇文章主要给大家介绍了关于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正则表达式实现字符串中连续在一起的字符去重的文章就介绍到这了,更多相关正则表达式实现字符去重内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript This指向问题详解

    JavaScript This指向问题详解

    这篇文章主要介绍了JavaScript This指向问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • JavaScript改变函数作用域的方法示例

    JavaScript改变函数作用域的方法示例

    本文主要介绍了JavaScript改变函数作用域的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • javascript实现移动端上的触屏拖拽功能

    javascript实现移动端上的触屏拖拽功能

    这篇文章主要为大家详细介绍了基于javascript实现移动端上的触屏拖拽功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • js点击文本框弹出可选择的checkbox复选框

    js点击文本框弹出可选择的checkbox复选框

    这篇文章主要介绍了js点击文本框弹出可选择的checkbox复选框的相关资料,需要的朋友可以参考下
    2016-02-02
  • TypeScript索引访问类型详解

    TypeScript索引访问类型详解

    IndexedAccessTypes在TypeScript中用于通过索引访问和获取其他类型中的属性,本文就来详细的介绍一下TypeScript索引访问类型,感兴趣的可以了解一下
    2025-10-10
  • JavaScript函数的4种调用方法实例分析

    JavaScript函数的4种调用方法实例分析

    这篇文章主要介绍了JavaScript函数的4种调用方法,结合实例形式总结分析了javascript函数调用常见操作技巧与注意事项,需要的朋友可以参考下
    2019-03-03
  • javascript简单比较日期大小的方法

    javascript简单比较日期大小的方法

    这篇文章主要介绍了javascript简单比较日期大小的方法,涉及JavaScript针对日期的转换与判定操作技巧,需要的朋友可以参考下
    2016-01-01
  • 比较JavaScript对象的四种方式

    比较JavaScript对象的四种方式

    这篇文章主要介绍了比较 JavaScript 对象的四种方式,对js对象感兴趣的同学,可以参考下
    2021-04-04
  • bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?

    bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?

    这篇文章主要介绍了bootstrap-treeview实现多级树形菜单,后台JSON格式如何组织,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 一文解析JS如何准确获取对象自身的属性

    一文解析JS如何准确获取对象自身的属性

    在 JavaScript 开发中,我们经常需要遍历对象的属性,本文将深入讲解如何准确获取对象非原型链上的属性(即“自身属性”),并结合你提供的代码,给出最佳实践,有需要的可以了解下
    2025-09-09

最新评论