如何用正则匹配连续重复的字符串片段?
高洛峰
高洛峰 2016-11-10 11:53:35
0
2
715

有一个字符串,里面都是用',(逗号)'隔开的数字,只有一个数字出现了1次,其他所有数字都出现了2次。我如何通过正则匹配或者替换的方式,提取出这个只出现过1次的数字。
例如:
1.var一个字符串str和正则表达式re

  var str = '112,112,1,1,3,3,234,234,4,22,22';
  var re;

2.如何通过正则匹配或者替换,改变str的值为'4'

  str = str.match(re);
  或者
  str = str.replace(re,'');//想让str值为'4'


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all(2)
学霸
var str = '112,112,1,1,3,3,234,234,4,22,22';
str += ',';
var result = str.replace(/(\d+\,)\1+/g, ''); // 匹配连续多个'ddd,'
console.log(result); // '4,'
result = result.replace(/\,$/, ''); // 去掉结尾','
console.log(result); // '4'


三叔

正则匹配需要视实际情况而定,比如说:

var pattern1 = /\d+(?!,)$/g;
var pattern2 = /\d+$/g;
var str = '112,112,1,1,3,3,234,234,4';
console.log(str.match(pattern2));  //["4"]
或者直接这样:
str.replace(/\d+,/g, '');  //'4'

更改题目后:
如果说其他所有数字都出现了2次都是挨着的,楼下的写法OK。
str += ',';
str.replace(/(d+,)1+/g, '').replace(/,$/, '');
如果不挨着,就不行,那就先处理下
var arr = str.split(',');
arr.sort();
str = arr.join(',');
str += ',';
str.replace(/(d+,)1+/g, '').replace(/,$/, '');


Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template