假设我有一个字符串,
"Testing éééé 123"
我想去除所有出现的
é
以及之前和之后的所有空格,只需将其替换为一个空格即可,使其最终像:
"Testing 123"
如何捕获字符的序列的重复出现,即重复
é
,用于Javascript正则表达式?
答案 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, ' ');
// ^