簡體   English   中英

正則表達式防止同一字符連續出現超過 3 次

[英]Regex to prevent the same character from appearing more than 3 times in a row

我想要一個 javascript function 可以防止同一字符在輸入字段中連續出現 3 次以上。 我知道如何通過 1 次重復輕松做到這一點。 例如...

 function deleteit() {message.value=message.value.replace(/(.)\1/g,'')}
 <input type='text' id='message' onkeyup='deleteit()'>

如果您在此處多次輸入相同的字符,則第二個字符將被刪除。 我想最多允許 3 個並在 4 號刪除。 例如,“Yippy.!!” 可以接受,但輸入“Yippy!!!!” 將刪除第 4 個感嘆號。 我嘗試將正則表達式更改為/(..)\1/g確實有效,但不完全。 它正在刪除 2 個“組”字符,所以如果我輸入“YOYO”之類的內容,它會刪除它。 如何將 4 個或更多相同字符更改為 3 個。

您可以使用

 function deleteit() {message.value=message.value.replace(/(.)(\1{2})\1+/g,'$1$2')}
 <input type='text' id='message' onkeyup='deleteit()'>

請參閱正則表達式演示 詳情

  • (.) - 捕獲組 1 ( $1 ):除換行符之外的任何字符
  • (\1{2}) - 捕獲第 2 組( $2 ):兩個字符等於第 1 組中捕獲的字符
  • \1+ - 與第 1 組中捕獲的字符相同的字符出現一次或多次。

或者,或者:

 function deleteit() {message.value=message.value.replace(/((.)\2{2})\2+/g,'$1')}
 <input type='text' id='message' onkeyup='deleteit()'>

正則表達式詳細信息

  • ((.)\2{2}) - 組 1(替換模式中的$1指的是該組值):
    • (.) - 第 2 組:除換行符以外的任何字符
    • \2{2} - Group 2 值的兩次出現
  • \2+ - 組 2 值的一次或多次出現

請參閱正則表達式演示

我原以為這就是你要找的東西:

搜索模式:

(.)(\1)\1+

更換模式:

$1$2

https://regex101.com/r/tAFNUa/1

暫無
暫無

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

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