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

时间:2017-07-03 01:45:45

标签: javascript

我在javascript中有以下字符串:

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

重复的子字符串是"restoreState":。我想使用正则表达式删除重复的子字符串。我试过下面的代码,但没有工作:

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

([a-zA-Z]+\b)(?!.*\1\b)

这应该会删除带有字母字符的重复字词

答案 1 :(得分:1)

基于问题评论:

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'));

捕获字符串:引用,任意数量的非引号,引用。确保以后有另一个。如果是这样,请替换它。