javascript - 如何在javascript中删除以引号开头和结尾的重复字符串

标签 javascript

我在 javascript 中有以下字符串:

var str = '"restoreState":                     "restoreState":0,';

重复的子字符串是 "restoreState":。我想使用正则表达式删除重复的子字符串。我尝试了以下代码但没有成功:

var re = str.replace(/([a-zA-Z]).*?\1/, '')
console.log(re)

输出为 "\"eState\":\"restoreState\":0,"。 我怎样才能通过正则表达式删除它?我的正则表达式有什么问题?

我正在寻找通用字符串的解决方案。删除字符串的重复部分,如果它有一个,否则不要在字符串上做任何事情。例如:

"restoreState": "restoreState":0, => "restoreState":0,

"restoreState": 0 => "restoreState": 0

最佳答案

基于问题评论:

function dedupe(str) {
    return str.replace(/("[^"]+")(?=.*\1)/g, '')
}
console.log(dedupe('"foo": "bar", "bar": "foo"'));
console.log(dedupe('"foo": { "foo": "bar" }'));
console.log(dedupe('"foo": "bar": "foo": "bar": 0'));
console.log(dedupe('"foo": "baz", "bar": "baz"'));
console.log(dedupe('"foo": 17, "bar": 17'));

捕获字符串:quote,任意数量的非引号,quote。确保稍后还有另一个。如果是这样,请将其替换为空。

关于javascript - 如何在javascript中删除以引号开头和结尾的重复字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44876729/

相关文章:

javascript - React/JSX - 以最少的代码重复有条件地改变元素类型

javascript - 为什么我的 JavaScript 函数在我的 jQuery load() 调用完成加载之前运行?

javascript - WebSocket 是否依赖于硬件?

javascript - 如何在 Firefox 插件中创建 splitmenu

javascript - 如何将两个变量设置为一个

javascript - Kendo 在初始文件选择后上传复制文件

javascript - 函数内部的 Javascript 变量是否未声明(无 var)被视为全局变量?

javascript - KeystoneJS TinyMCE 编辑器中的代码语法突出显示

javascript - 为什么这是错误的? (将 "this"与 jQuery 一起使用)

javascript - Mocha : how to test this async method that returns a callback?