JavaScript正则表达式删除特定的连续重复字符

jon*_*tek 12 javascript regex

我正在尝试构建一个正则表达式函数,它将删除所有非字母数字字符并删除所有重复字符,例如:aabcd*def%gGGhhhijkklmnoP\1223将成为:abcddefgGhijklmnoPR3.我能够轻松删除特殊字符,但不能为我的生活找出如何删除重复的字符?这是我当前删除特殊字符的代码:

var oldString = aabcd*def%gGGhhhijkklmnoP\122
var filtered = oldStringt.replace(/[^\w\s]/gi, ""); 
Run Code Online (Sandbox Code Playgroud)

如何扩展上述正则表达式以检查重复字符以及由非字母数字字符分隔的重复字符.

xan*_*tos 31

正则表达式是 /[^\w\s]|(.)\1/gi

在这里测试:http://jsfiddle.net/Cte94/

它使用反向引用来搜索(.)后跟相同字符的任何字符\1

除非"检查重复的字符",否则你的意思是 aaa => a

那就是 /[^\w\s]|(.)(?=\1)/gi

在这里测试:http://jsfiddle.net/Cte94/1/

请注意,两个正则表达式都不区分大小写.A == a,Aa重复也是如此.如果你不想要它,带走了i/gi


Joe*_*Joe 5

\1+ 是关键

"aabcdd".replace(/(\w)\1+/g, function (str, match) {
    return match[0]
}); // abcd
Run Code Online (Sandbox Code Playgroud)