我正在嘗試為具有這兩種模式的字串創建 2 個單獨的正則運算式
STTSHP.COM
- 大寫
- 一個字母只重復兩次
- 沒有數字
- .com 前只有 6 個字母
YNGFUV.COM
- 大寫
- 沒有字母重復
- 沒有數字
- .com 前只有 6 個字母
我想出了這個正則運算式,但它似乎不起作用。錯了怎么辦?
^(?=(?:[A-Z\D]*[A-Z]{6})(?:([A-Z\D])(?!.*\1)){6}\.COM$
uj5u.com熱心網友回復:
根據我對問題的理解,這里有一個可以滿足所有條件的正則運算式:
^([A-Z])(?![A-Z]*\1)(?:([A-Z])\2(?!\2)(?:([A-Z])(?![A-Z]*\3)){3}|(?:([A-Z])(?![A-Z]*\4)){5})\.COM$
正則運算式演示
正則運算式詳細資訊:
^: 開始([A-Z]):匹配一個大寫字母并在組#1中捕獲(?!\1): 確保首字母不重復(?::凝視非捕獲組([A-Z])\2:匹配一個大寫字母并在組#2 中捕獲。使用 . 再次匹配相同的字母\2。(?!\2):確保第三次不再重復相同的字母(?:([A-Z])(?!\3)){3}:匹配任意 3 個字母,確保沒有相鄰的重復|: 要么(?:([A-Z])(?!\4)){5}: 匹配 5 個不允許任何相鄰重復的大寫字母
):結束非捕獲組\.COM: 匹配.COM$: 結尾
uj5u.com熱心網友回復:
您可以斷言沒有 3 個相同的大寫字符。
^(?![A-Z]*([A-Z])[A-Z]*\1[A-Z]*\1)[A-Z]{6}\.COM$
部分中的模式匹配:
^字串的開始(?!負前瞻,斷言右邊不是[A-Z]*([A-Z])[A-Z]*\1[A-Z]*\1匹配 3 個相同的大寫字符
)關閉前瞻[A-Z]{6}\.COM$.COM在字串末尾匹配
請參閱正則運算式 101 演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457114.html
下一篇:如何使用string.replace()重新加載newValue而不是用JavaScript重復newValue?[復制]
