我在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
答案 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'));
捕获字符串:引用,任意数量的非引号,引用。确保以后有另一个。如果是这样,请替换它。