正则表达式从空格分隔的字符串中删除顺序重复项

时间:2012-07-12 23:31:48

标签: javascript regex

我正在尝试从字符串中删除仅按顺序发生的重复项。也就是说,给定字符串“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);

1 个答案:

答案 0 :(得分:1)

您要将空格作为要匹配两次的单词的一部分。尝试

/\b(\w+)\s+\1\b/