我正在尝试从字符串中删除仅按顺序发生的重复项。也就是说,给定字符串“1 2 3 3 2 1”,只应删除3中的一个(即“1 2 3 2 1”)。我真的以为我弄清楚了。然后,在测试期间,我发现了一个无效的案例。我已经尝试了我能想到的每一种组合,但无济于事。当然这很简单,因为它不是一个难以匹配的事情(显然除了我)。
以下是一些Javascript来说明问题。正确处理第一个testVal字符串。注释掉的testVal字符串未正确处理。
// The following string should reduce to: MTC MTCA MTC ORD MTC (it does).
var testVal = "MTC MTC MTCA MTC MTC MTC ORD MTC";
// The following string should reduce to: MTC (it does not. Result = MTC MTC).
// The string MTC MTC MTC MTC also only reduces to MTC MTC, so I'm thinking
// it's a whitespace issue.
// var testVal = "MTC MTC";
while (/\b(\s*\w+\s*)\b\1/.test(testVal)) {
testVal = testVal.replace(/\b(\s*\w+\s*)\b\1/g,'$1');
}
alert(testVal1);
答案 0 :(得分:1)
您要将空格作为要匹配两次的单词的一部分。尝试
/\b(\w+)\s+\1\b/