【问题标题】:Javascript - capture repeated sequence?Javascript - 捕获重复序列?
【发布时间】:2018-12-25 01:13:29
【问题描述】:

假设我有一个字符串,

"Testing   éééé     123" 

我想去掉所有出现的

é 

以及之前和之后的所有空格,只需将其替换为一个空格,最终结果如下:

"Testing 123" 

你如何捕捉重复的字符序列,即重复的

é

,对于 Javascript 正则表达式?

【问题讨论】:

  • 当你说重复字符时,“t”也在你给出的字符串中重复。我猜你想删除所有非字母和非数字字符。

标签: javascript regex sequence repeat


【解决方案1】:

反向引用是这类事情的好朋友。

正则表达式中允许反向引用,允许您匹配 same 重复模式作为第一个模式。例如,让我们匹配您的 char 实体:

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

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

如果你想删除重复的字符,你甚至可以进一步扩展它:

/(.+)\1+/i

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

【讨论】:

    【解决方案2】:

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

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

    如果可能有额外的个重复序列,例如

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

    然后也使用全局标志:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 2019-03-18
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      相关资源
      最近更新 更多