我想要可以滿足以下要求的正則運算式:
- 總共 6 到 10 個字符
- 至少 1 個但不超過 2 個字符需要是 alpha
- 字母字符可以在字串中的任何位置
我們已經嘗試過這個,但沒有按預期作業: (^[A-Z]{1,2}[0-9]{5,8}$)|(^[A-Z]{1}[0-9]{4,8}[A-Z]{1}$)|(^[0-9]{4,8}[A-Z]{1,2}$)|([^A-Z]{3}[0-9]{6,9})
任何人都可以幫我弄清楚嗎?
謝謝
uj5u.com熱心網友回復:
您可以將字串的長度斷言為 6-10 個字符。
然后[A-Z]在可選數字之間匹配至少一個字符,并可選地[A-Z]在可選數字之間匹配第二個字符。
^(?=[A-Z\d]{6,10}$)\d*[A-Z](?:\d*[A-Z])?\d*$
^字串的開始(?=[A-Z\d]{6,10}$)正向前瞻斷言 AZ 或一個數字出現 6-10 次\d*[A-Z]匹配可選數字,然后匹配第一個[A-Z](?:\d*[A-Z])?可選匹配可選數字和第二個[A-Z]\d*匹配可選數字$字串結束
請參閱正則運算式演示。
uj5u.com熱心網友回復:
一種選擇是使用以下正則運算式:
^(?=.*[a-z])(?!(?:.*[a-z]){3})[a-z\d]{6,10}$
i設定大小寫無關標志。
演示
該運算式為:“匹配字串的開頭,斷言字串至少包含一個字母,斷言字串不包含三個字母,斷言字串包含 6-10 個字符,都是字母或數字”。
運算式的各個部分具有以下功能。
^ # match the beginning of the string
(?= # begin a positive lookahead
.*[a-z] # match zero or more characters and then a letter
) # end positive lookahead
(?! # begin a negative lookahead
(?: # begin a non-capture group
.*[a-z] # match zero or more characters and then a letter
){3} # end non-capture group and execute it 3 times
) # end negative lookahead
[a-z\d]{6,10} # match 6-10 letters or digits
$ # match end of string
請注意,這兩個前瞻都不會從字串的開頭推進正則運算式引擎維護的字串指標。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334538.html
標籤:javascript 正则表达式
