我希望有一個正則表達式模式只允許字母數字值,既不是僅字母也不數字,具有最小長度= 4,最大長度= 15,正則表達式模式
我使用/^[a-zA-Z0-9]{4,15}$/
試過,但這種模式還允許只有字母和只有數字。
請幫我
我希望有一個正則表達式模式只允許字母數字值,既不是僅字母也不數字,具有最小長度= 4,最大長度= 15,正則表達式模式
我使用/^[a-zA-Z0-9]{4,15}$/
試過,但這種模式還允許只有字母和只有數字。
請幫我
這應該做的伎倆:
^(?=^.{4,15}$)([a-zA-Z]+[0-9][a-zA-Z0-9]*|[0-9]+[a-zA-Z][a-zA-Z0-9]*)$
看到這裏的工作例如:http://regexr.com?351ia
說明:(更新:現在長度檢查)
首先看正面(?=^.{4,15}$)
檢查您的字符串的長度。
如果字符串以字母的正則表達式的這一部分開始被用來評價它:
[a-zA-Z]+[0-9][a-zA-Z0-9]*
[a-zA-Z]+
意味着該字符串開頭與至少一個字母[0-9]
然後在有些點必須有一個數字[a-zA-Z0-9]*
後面是任意數量或字母的數字如果字符串以數字開頭使用正則表達式的第二部分:
[0-9]+[a-zA-Z][a-zA-Z0-9]*
同上,只是這一次有必須在字符串中某處的信。
您沒有檢查長度限制。 – HBP
是的,剛剛也看到了。感謝您的提醒。 ;) – Friederike
您可能希望做一個雙向的前瞻來查找數字和字母,一旦找到數字和字母,匹配就會繼續,否則就不會。
正則表達式:/^(?=.*?[a-zA-Z])(?=.*?[0-9])[a-zA-Z0-9]{4,15}$/
使用原來的字母數字和長度測試,然後驗證字符串包含字母和數字通過測試一個數字,然後按一個字母或字符串中反之亦然任何地方。
/^[a-z\d]{4,15}$/i.test (s) && /\d[a-z]|[a-z]\d/i.test (s);
您提到的正則表達式模式應該允許使用字母或數字。 – SiddharthaRT
@SiddharthaRT這就是他只想得到混合結果的問題 – WhileTrueSleep