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 实现微信分享(QQ、朋友圈、分享给朋友)

    Javascript 实现微信分享(QQ、朋友圈、分享给朋友)

    这篇文章主要介绍了Javascript 实现微信分享(QQ、朋友圈、分享给朋友)的相关资料,需要的朋友可以参考下
    2016-10-10
  • Kindeditor在线文本编辑器如何过滤HTML

    Kindeditor在线文本编辑器如何过滤HTML

    KindEditor使用JavaScript编写,可以无缝的与Java、.NET、PHP、ASP等程序接合。本文给大家介绍Kindeditor在线文本编辑器如何过滤HTML,需要的朋友参考下吧
    2016-04-04
  • javascript中String类的subString()方法和slice()方法

    javascript中String类的subString()方法和slice()方法

    最近在看《Javascript高级程序设计》一书,在书中发现一些以前没有接触过的且比较实用的技巧和知识点,想通过博客记录一下,以加深记忆。
    2011-05-05
  • JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】

    JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】

    这篇文章主要介绍了JS实现放大、缩小及拖拽图片的方法,可兼容IE及火狐等浏览器,通过javascript自定义函数实现针对图片的放大、缩小及拖拽等功能,涉及javascript动态操作页面元素的相关技巧,需要的朋友可以参考下
    2016-08-08
  • 原生JavaScript实现Ajax的方法

    原生JavaScript实现Ajax的方法

    这篇文章主要介绍了原生JavaScript实现Ajax的几种方法,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • location.hash保存页面状态的技巧

    location.hash保存页面状态的技巧

    hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分)。接下来通过本文给大家介绍location.hash保存页面状态的相关内容,感兴趣的朋友一起学习吧
    2016-04-04
  • 微信小程序实现传递多个参数与事件处理

    微信小程序实现传递多个参数与事件处理

    这篇文章主要介绍了微信小程序实现传递多个参数与事件处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 原生js实现网易轮播图效果

    原生js实现网易轮播图效果

    这篇文章主要为大家详细介绍了原生js实现网易轮播图效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • JS获取Table中td值的方法

    JS获取Table中td值的方法

    这篇文章主要介绍了JS获取Table中td值的方法,实例分析了javascript操作table中td的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • JavaScript判断是否为数字的几种方式汇总(推荐!)

    JavaScript判断是否为数字的几种方式汇总(推荐!)

    有时候需要根据输入的内容来进行计算,这个时候就需要判断输入的内容是否是数字,下面这篇文章主要给大家介绍了关于JavaScript判断是否为数字的几种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06

最新评论