javascript - 删除字符串中第二次出现的字符的正则表达式

标签 javascript

我正在尝试编写一个 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/

相关文章:

javascript - 简单的 jQuery 脚本无法执行任何操作

javascript - 在 Typescript 前端和 NodeJs 后端之间共享 js 对象的最佳方式

javascript - 正则表达式使用javascript限制汉字

javascript - 仅从特定的引用者/域加载外部 JS

javascript - Javascript 中字符串的 Switch-Case 未按预期工作

javascript - 具有html的js对象的访问值

c# - JSON调用C#类方法

javascript - 如何从待办事项列表中清除元素(带有用户添加的元素)?

javascript - 正则表达式 : Pound Sign at beginning of word

javascript - html5 canvas删除垂直/水平线像素值