正则表达式通过javascript从字符串中删除重复的字符

Sim*_*mar 16 javascript regex

我找到了一种使用正则表达式从字符串中删除重复字符的方法.

function RemoveDuplicates() {
    var str = "aaabbbccc";
    var filtered = str.replace(/[^\w\s]|(.)\1/gi, "");  
    alert(filtered);
}
Run Code Online (Sandbox Code Playgroud)

输出:abc 这个工作正常.

但如果str = "aaabbbccccabbbbcccccc"那时输出是abcabc.有没有办法只获取唯一的字符或删除所有重复的字符?如果有任何办法,请告诉我.

geo*_*org 31

像"这个,后面有东西,这个"的前瞻:

var str = "aaabbbccccabbbbcccccc";
console.log(str.replace(/(.)(?=.*\1)/g, "")); // "abc"
Run Code Online (Sandbox Code Playgroud)

请注意,这会保留每个字符的最后一次出现:

var str = "aabbccxccbbaa";
console.log(str.replace(/(.)(?=.*\1)/g, "")); // "xcba"
Run Code Online (Sandbox Code Playgroud)

没有正则表达式,保留顺序:

var str = "aabbccxccbbaa";
console.log(str.split("").filter(function(x, n, s) {
  return s.indexOf(x) == n
}).join("")); // "abcx"
Run Code Online (Sandbox Code Playgroud)

  • 通过运行此代码...字符串不会出现相同的seqeunce.if var str ="aaabbbcccaabbbcccaaaaaaaasa"; output ="bcsa"但我想要像abcs这样的东西 (2认同)

Iva*_*vak 10

这是一个老问题,但在ES6中我们可以使用集合.代码如下所示:

var test = 'aaabbbcccaabbbcccaaaaaaaasa';
var result = Array.from(new Set(test)).join('');

console.log(result);
Run Code Online (Sandbox Code Playgroud)