我正在使用存储过程来验证输入参数。输入参数必须包含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”,“az”,“0-9”,“ - ”,“()”,“&”,“/”,“\”,“,”的文本的正则表达式
- 2. 值必须匹配正则表达式^ [^ AZ] + $ - Visual Studio 2015
- 3. 正则表达式,字符串尾部必须包含数字
- 4. 红宝石正则表达式允许包括AZ,az,0-9,句号,连字符和空格
- 5. JavaScript正则表达式允许AZ,az或0-9&@等
- 6. 正则表达式:0-9 AZ AZ或任何这些* + -/=^_`{|}〜
- 7. 在Java中使用正则表达式需要一个代码 - >字符串必须Captial字母(AZ)和包含数字(0-9)
- 8. 必须包含字符串中所有字符的正则表达式匹配
- 9. 的Oracle SQL - REGEXP_LIKE包含除AZ或az
- 10. 正则表达式字符串包含
- 11. 正则表达式Javascript(必须有1个数字和字符)
- 12. 是(“。{2} \\ [AZ] {3}”)模式正确的正则表达式“n2 XXX”
- 13. 正则表达式:验证长度,必须包含数字,必须包含3个连字符
- 14. 正则表达式字符串结束与.log和包含字符和数字 -
- 15. 检查字符串中包含正则表达式和无JS
- 16. 必须至少有数量和字符的正则表达式
- 17. 正则表达式,必须包含一个数字,字符1-5和字母和数字
- 18. Warning:session_start()[function.session-start]:会话ID包含非法字符,有效字符是az,AZ,0-9和' - ',
- 19. 会话ID过长或含有非法字符,有效字符包括AZ,az,0-9和 ' - '
- 20. 与regcomp的^ [az] {0,20000} $正则表达式的可怕表现
- 21. Python的正则表达式:字符串不包含“JPG”,并且必须有“ - ”和小写字母
- 22. 正则表达式排除和包含两个字符串的字符串
- 23. 正则表达式包含字符串,不包含另一个
- 24. 的Android只接受az和AZ
- 25. PHP:正则表达式,必须包含列表
- 26. 正则表达式和字符串
- 27. PHP正则表达式和字符串
- 28. 正则表达式匹配字符串,仅包含数目和计数必须为2倍分钟的值
- 29. 正则表达式:密码必须包含至少1个特殊字符
- 30. 正则表达式,如果字符串包含字符
其他* *字符允许? – 2012-08-08 10:02:44
不,就像上面的示例.. – Praditha 2012-08-08 10:23:03