簡體   English   中英

Javascript Regex:查找並替換重復次數少於一定次數的字母

[英]Javascript Regex: find & REPLACE letters that repeat LESS THAN a certain number of times

這個問題是從另外一個衍生這里

比如說,對於字符串“lllrrrrrrrruuddddr”,如何用“-”替換那些重復次數少於4次的字母,從而產生“---rrrrrrrr--dddd-”。

最簡單的方法就是最簡單的方法。

  • [a-zA-Z]匹配單個 ASCII 字母
  • ([a-zA-Z])是一個捕獲組
  • \\1是一個反向引用,它告訴我們再次匹配通過再次捕獲組 #1 所匹配的內容
  • \\1*告訴我們匹配該反向引用零次或多次

那么你只需要這個:

function replaceRunsWithLengthLessThan( s, n, r ) {
    const replaced = typeof(s) !== "string"
      ? s
      : s.replace( rxSingleLetterRun, m => m.length < n ? r : m )
      ;
    return replaced;
  }
  const rxSingleLetterRun = /([a-zA-Z])\1*/ig;

可以調用為

const orig = 'aaaa bbb cc d eeeeee'
const repl = replaceRunsWithLengthLessThan( orig, 4, '-');

並產生預期值: aaaa - - - eeeeee

編輯注意:如果你想用與跑步長度一樣多的破折號替換短跑,你只需要改變

s.replace( rxSingleLetterRun, m => m.length < n ? r : m )

s.replace( rxSingleLetterRun, m => m.length < n ? r.repeat(m.length) : m )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM