使用正则表达式删除连续重复的字符

4

我有以下类型的输入和期望的输出。我想要做的基本上是删除连续重复的字符。(保留第一个字符并删除所有后续连续重复的字符)。

input = dup(["abracadabra","allottee","assessee"])
output = ["abracadabra","alote","asese"].

input = dup(["kelless","keenness"])
output =  ["keles","kenes"]

这是我目前为止所做的。

let arr1 = ["abracadabra", "allottee", "assessee"];
let arr2 = ["kelless", "keenness"];

function dup(input) {
  return input.map(e => {
    let tempOp = ''
    for (let i = 0; i < e.length; i++) {
      if (i === 0) tempOp += e[i];
      else if (e[i - 1] !== e[i]) tempOp += e[i]
    }
    return tempOp;
  })
}
console.log(dup(arr1))
console.log(dup(arr2))

我可以使用for循环来完成,但是否有更好的方法呢?如果可以使用正则表达式,任何指引都将非常有帮助。


1个回答

7
您可以尝试以下正则表达式:
(.)\1+

然后用$1替换匹配项。这意味着:

用第一个捕获组的匹配结果(即.,只匹配一个字符)替换多个出现次数。

let arr = [
  'abracadabra',
  'allottee',
  'assessee',
  'Gooooooooooooooogle',
  'Vacuum'
];

arr = arr.map(val => val.replace(/(.)\1+/g, '$1'));
console.log(arr);


/(.)\1+/g 是有效的 (+1)。 - Jose Manuel Abarca Rodríguez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接