我在 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/