我正在使用存儲過程來驗證輸入參數。輸入參數必須包含a-z和A-Z以及0-9。
例如:
aS78fhE0
- >正確
76AfbRZt
- >正確
76afbrzt
- >不正確(不包含大寫AZ)
asAfbRZt
- >不正確(不包含數字0-9)
4QA53RZJ
- >不正確(不包含小寫az)
什麼正則表達式可以驗證輸入參數,如上面的例子。
非常感謝,
Praditha
UPDATE除了字母數字
其他字符是不允許
我使用MySQL 5正則表達式:字符串必須包含a-z和A-Z和0-9
回答
另外:
MySQL的你需要將
SELECT * FROM mytable WHERE mycolumn REGEXP BINARY '[a-z]'
AND mycolumn REGEXP BINARY '[A-Z]'
AND mycolumn REGEXP BINARY '[0-9]'
添加額外
AND mycolum REGEXP BINARY '^[a-zA-Z0-9]+$'
如果你只想的字母數字字符串中
我不明白,我只是想這樣'SELECT * FROM tb_m_menu WHERE 'aa11'REGEXP'[A-Z]';',但它返回TRUE。我認爲MySQL的大小寫沒有區別。 – Praditha 2012-08-08 11:30:17
您需要使用二進制字符串來使正則表達式區分大小寫。 – 2012-08-08 11:51:43
你是對的Tim - 編輯; – 2012-08-08 11:58:45
版本你可以最多將其分成3個獨立的正則表達式來測試每一種情況下。
[a-z]
,[A-Z]
,並且[0-9]
和那些比賽的結果放在一起,你可以實現你正在尋找的結果。
編輯:
如果你只是尋找匹配字母數字,你應該做^[a-zA-Z0-9]+$
由埃德頭在評論
如果字符串只需要包含這些字符,添加額外的正則表達式'^ [a-zA-Z0-9] + $' – 2012-08-08 10:18:31
這是行不通的,因爲它不允許字母不是字母或數字 – 2012-08-08 10:20:36
請重新閱讀 - 我寫了** JUST ** - 這是更新之前。 – 2012-08-08 10:31:10
我的解決方案是通向長期監守表達我將重排列在所有建議6種可能性發現大寫字母,小寫字母和數字需要可以安排在字符串中
^(.*[a-z].*[A-Z].*[0-9].*|
.*[a-z].*[0-9].*[A-Z].*|
.*[A-Z].*[a-z].*[0-9].*|
.*[A-Z].*[0-9].*[a-z].*|
.*[0-9].*[a-z].*[A-Z].*|
.*[0-9].*[A-Z].*[a-z].*)$
編輯:在年底和年初忘記了.*
。
這允許像'#a * B $ 1'這樣的字符串(正如OP現在指出的)應該是非法的。 – 2012-08-08 10:28:45
我已經試過這樣的,但它仍然不正確'SELECT * FROM my_table的 WHERE 'aS78fhE0' REGEXP「^(* [AZ] * [AZ] * [0-9] *。| * [AZ]。* [0-9]。* [AZ]。* | 。* [AZ]。* [az]。* [0-9]。* | 。* [AZ]。* [0-9]。* [az]。* | 。* [0-9]。* [az]。* [AZ]。* | 。* [0-9]。* [AZ]。* az)。*)$ '' – Praditha 2012-08-08 10:33:23
嘗試從該正則表達式中刪除空格! – user1447257 2012-08-08 14:00:20
隨着先行斷言,你可以這樣做:
/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$/
更新:看來MySQL不支持各地斷言看看。
+1甚至沒有想到,很好的回答 – 2012-08-08 10:08:31
使用不同的正則表達式引擎的存儲過程?因爲MySQL的引擎不支持lookaround斷言。 – 2012-08-08 10:12:16
這匹配任意字符,例如'%aAA9'通過這個正則表達式 – galymzhan 2012-08-08 10:14:56
不幸的是,MySQL不支持環視斷言,所以你必須拼出來的正則表達式引擎(假設只有這些字符是合法的):
^(
[A-Za-z0-9]*[a-z][A-Za-z0-9]*[A-Z][A-Za-z0-9]*[0-9][A-Za-z0-9]*|
[A-Za-z0-9]*[a-z][A-Za-z0-9]*[0-9][A-Za-z0-9]*[A-Z][A-Za-z0-9]*|
[A-Za-z0-9]*[A-Z][A-Za-z0-9]*[a-z][A-Za-z0-9]*[0-9][A-Za-z0-9]*|
[A-Za-z0-9]*[A-Z][A-Za-z0-9]*[0-9][A-Za-z0-9]*[a-z][A-Za-z0-9]*|
[A-Za-z0-9]*[0-9][A-Za-z0-9]*[a-z][A-Za-z0-9]*[A-Z][A-Za-z0-9]*|
[A-Za-z0-9]*[0-9][A-Za-z0-9]*[A-Z][A-Za-z0-9]*[a-z][A-Za-z0-9]*
)$
,或者在MySQL的:
SELECT * FROM mytable WHERE mycolumn REGEXP BINARY "^([A-Za-z0-9]*[a-z][A-Za-z0-9]*[A-Z][A-Za-z0-9]*[0-9][A-Za-z0-9]*|[A-Za-z0-9]*[a-z][A-Za-z0-9]*[0-9][A-Za-z0-9]*[A-Z][A-Za-z0-9]*|[A-Za-z0-9]*[A-Z][A-Za-z0-9]*[a-z][A-Za-z0-9]*[0-9][A-Za-z0-9]*|[A-Za-z0-9]*[A-Z][A-Za-z0-9]*[0-9][A-Za-z0-9]*[a-z][A-Za-z0-9]*|[A-Za-z0-9]*[0-9][A-Za-z0-9]*[a-z][A-Za-z0-9]*[A-Z][A-Za-z0-9]*|[A-Za-z0-9]*[0-9][A-Za-z0-9]*[A-Z][A-Za-z0-9]*[a-z][A-Za-z0-9]*)$";
[A-ZA-Z0-9] * [AZ] + [A-ZA-Z0 -9] * [AZ] + [A-ZA-Z0-9] * [0-9] + [A-ZA-Z0-9] * | [A-ZA-Z0-9] * [AZ] + [ A-ZA-Z0-9] * [0-9] + [A-ZA-Z0-9] * [AZ] + [A-ZA-Z0-9] * | [A-ZA-Z0-9] * [AZ] + [A-ZA-Z0-9] * [AZ] + [A-ZA-Z0-9] * [0-9] + [A-ZA-Z0-9] * | [A-ZA- Z0-9] * [AZ] + [A-ZA-Z0-9] * [0-9] + [A-ZA-Z0-9] * [AZ] + [A-ZA-Z0-9] * | [A-ZA-Z0-9] * [0-9] + [A-ZA-Z0-9] * [AZ] + [A-ZA-Z0-9] * [AZ] + [A-ZA-Z0 -9] * | [A-ZA-Z0-9] * [ 0-9] + [a-zA-Z0-9] * [az] + [a-zA-Z0-9] * [AZ] + [a-zA-Z0-9] *
這或者允許無效字符串,比如'「%§&aA0§$%」'或者(如果你在其周圍添加錨)拒絕有效的字符串,比如'「aA0aA0」'。 – 2012-08-08 11:46:48
- 1. 正則表達式(第一個字符必須爲AZ)
- 2. 包含「AZ」,「az」,「0-9」,「 - 」,「()」,「&」,「/」,「\」,「,」的文本的正則表達式
- 3. java的正則表達式[AZ] {6} - [AZ] {4} - [AZ] {4}
- 4. 正則表達式 「(?<!^)(?= [AZ])」
- 5. 正則表達式:字符串(包括AZ,az,0-9,可以包括 '\', '/' 和白色sapce)
- 6. 值必須匹配正則表達式^ [^ AZ] + $ - Visual Studio 2015
- 7. 正則表達式,字符串尾部必須包含數字
- 8. 紅寶石正則表達式允許包括AZ,az,0-9,句號,連字符和空格
- 9. 正則表達式:0-9 AZ AZ或任何這些* + -/=^_`{|}〜
- 10. JavaScript正則表達式允許AZ,az或0-9&@等
- 11. MySQL正則表達式[az] \。[az]但不是am或pm
- 12. 爲AZ或正則表達式1-8
- 13. 正則表達式從列表中刪除非字母詞AZ AZ(例外)
- 14. 在Java中使用正則表達式需要一個代碼 - >字符串必須Captial字母(AZ)和包含數字(0-9)
- 15. 必須包含字符串中所有字符的正則表達式匹配
- 16. PHP正則表達式:字符串必須包含字符類型
- 17. Java的正則表達式:AZ和 - 或者_,但只有一次
- 18. 的Oracle SQL - REGEXP_LIKE包含除AZ或az
- 19. 正則表達式字符串包含
- 20. 必須包含某些字母的字符串的正則表達式
- 21. 匹配字符串,而不是由AZ或AZ開頭,幷包含1324
- 22. 正則表達式AZ但後來排除串
- 23. 驗證正則表達式必須包含字母數字
- 24. 正則表達式Javascript(必須有1個數字和字符)
- 25. 是(「。{2} \\ [AZ] {3}」)模式正確的正則表達式「n2 XXX」
- 26. 正則表達式:驗證長度,必須包含數字,必須包含3個連字符
- 27. 正則表達式必須包含至少一個數字和字母嗎?
- 28. 正則表達式:當至少有x az,AZ,0-9,!@#$%^&*()_字符時如何匹配
- 29. 正則表達式字符串結束與.log和包含字符和數字 -
- 30. 檢查字符串中包含正則表達式和無JS
其他* *字符允許? – 2012-08-08 10:02:44
不,就像上面的示例.. – Praditha 2012-08-08 10:23:03