Javascript-捕获重复序列?

时间:2018-12-25 01:13:29

标签: javascript regex sequence repeat

假设我有一个字符串,

"Testing   éééé     123" 

我想去除所有出现的

é 

以及之前和之后的所有空格,只需将其替换为一个空格即可,使其最终像:

"Testing 123" 

如何捕获字符的序列的重复出现,即重复

é

,用于Javascript正则表达式?

2 个答案:

答案 0 :(得分:2)

反向引用是您做这种事情的朋友。

正则表达式中允许使用反向引用,从而使您可以将相同重复模式作为第一个匹配。例如,让我们匹配您的char实体:

/(&#x[0-9a-f]+;)\1+/i

这将匹配找到的第一个char实体,然后在其后链接任意数量的相同实体。

如果要删除重复的字符,甚至可以将其扩展为:

/(.+)\1+/i

这将匹配任何重复字符序列(包括空格)和复合模式。请注意,但是,如果有的话,它将消除文本中重复的字母。

答案 1 :(得分:1)

将序列放入一个组,并用+重复该组-然后,您可以用单个空格替换该(和周围的空格):

const input = "Testing   éééé     123";
const output = input.replace(/ *(?:é)+ */, ' ');
console.log(output);

如果可能存在其他个重复序列,例如

"Testing   éééé     123 foobar éé baz";

然后也使用全局标志:

.replace(/ *(?:é)+ */g, ' ');
//                        ^