我正在尝试编写一个 JavaScript 函数,该函数使用正则表达式删除任何第二次出现的字符。这是我的功能
var removeSecondOccurrence = function(string) {
return string.replace(/(.*)\1/gi, '');
}
它只是删除连续出现的情况。我希望它能够删除甚至不连续的一个。例如 papirana 应该变成pairn。
请帮忙
最佳答案
非正则表达式解决方案:
"papirana".split("").filter(function(x, n, self) { return self.indexOf(x) == n }).join("")
正则表达式代码很复杂,因为JS不支持lookbehinds:
str = "papirana";
re = /(.)(.*?)\1/;
while(str.match(re)) str = str.replace(re, "$1$2")
或者第一种方法的变体:
"papirana".replace(/./g, function(a, n, str) { return str.indexOf(a) == n ? a : "" })
关于javascript - 删除字符串中第二次出现的字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18258417/