簡體   English   中英

正則表達式檢查字符串中的 3 個相同字母?

[英]Regex to check for 3 same letters in a string?

我需要創建正則表達式,無論順序如何,它都會在字符串中查找 3 個相同的字母。

例子:

'aa2ff333' -> false
'aa2a' -> true
'aaa2' -> true

我試過這個,但它檢查連續的字母:

(.)\1\1

有什么建議嗎?

您可以將此正則表達式與前瞻一起使用:

/([a-zA-Z])(?=(?:.*?\1){2})/

正則表達式演示

正則表達式詳情:

  • ([a-zA-Z]) :匹配一個字母[a-zA-Z]並將其捕獲在組 #1 中
  • (?= : 開始前瞻
    • (?:.*?\\1){2} :至少有 2 次出現與捕獲組 #1 相同的字符。 .*?\\1在 0 個或多個任何字符后匹配反向引用\\1 這允許匹配輸入中任何地方的重復。
  • ) : 結束前瞻

一種方法是遍歷字符串並計算每個字符的出現次數,然后檢查是否有任何字符出現了 3 次

 let threeChars = (str) => { let obj = [...str].reduce((op, inp) => { if (/[az]/i.test(inp)) { op[inp] = op[inp] || 0 op[inp] += 1 } return op }, {}) return Object.values(obj).some(v => v === 3) } console.log(threeChars('aa2ff333')) console.log(threeChars('aa2a')) console.log(threeChars('aaa2'))


PS:-

  • 您可以通過刪除i標志使其不區分大小寫
  • 如果您需要至少 3 個字符,您可以將v == 3更改為v >= 3

暫無
暫無

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

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