我正在使用存储过程来验证输入参数。输入参数必须包含 az 和 AZ 以及 0-9。
例如:
aS78fhE0
->正确
76AfbRZt
->正确
76afbrzt
->不正确(不包含大写AZ)
asAfbRZt
->不正确(不包含数字0-9)
4QA53RZJ
->不正确(不包含小写az)
什么正则表达式可以像上面的例子一样验证输入参数,.?
非常感谢,
Praditha
UPDATE
不允许使用除字母数字以外的其他字符
我正在使用 MySQL 版本 5
6 回答
进一步来自约翰斯邮报和随后的评论:
您需要的 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]+$'
如果您只想要字符串中的字母数字
使用前瞻断言,您可以这样做:
/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$/
更新:似乎 mysql 不支持环顾断言。
您可以将其拆分为 3 个单独的正则表达式来测试每种情况。
[a-z]
, [A-Z]
, 和[0-9]
并将这些匹配的结果结合在一起,您就可以实现您正在寻找的结果。
编辑:
如果您只想匹配字母数字,您应该^[a-zA-Z0-9]+$
按照 Ed Head 在评论中的建议进行操作
我的解决方案是导致一个长表达式,因为我将排列所有 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].*)$
编辑:忘记了.*
结尾和开头。
不幸的是,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]*