2

我正在使用存储过程来验证输入参数。输入参数必须包含 az 和 AZ 以及 0-9。
例如:
aS78fhE0->正确
76AfbRZt->正确
76afbrzt->不正确(不包含大写AZ)
asAfbRZt->不正确(不包含数字0-9)
4QA53RZJ->不正确(不包含小写az)

什么正则表达式可以像上面的例子一样验证输入参数,.?

非常感谢,
Praditha

UPDATE
不允许使用除字母数字以外的其他字符
我正在使用 MySQL 版本 5

4

6 回答 6

5

进一步来自约翰斯邮报和随后的评论:

您需要的 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]+$'

如果您想要字符串中的字母数字

于 2012-08-08T11:00:48.907 回答
4

使用前瞻断言,您可以这样做:

/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$/

更新似乎 mysql 不支持环顾断言。

于 2012-08-08T10:07:30.907 回答
2

您可以将其拆分为 3 个单独的正则表达式来测试每种情况。

[a-z], [A-Z], 和[0-9]

并将这些匹配的结果结合在一起,您就可以实现您正在寻找的结果。

编辑:

如果您只想匹配字母数字,您应该^[a-zA-Z0-9]+$按照 Ed Head 在评论中的建议进行操作

于 2012-08-08T10:00:50.057 回答
1

我的解决方案是导致一个长表达式,因为我将排列所有 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].*)$

编辑:忘记了.*结尾和开头。

于 2012-08-08T10:02:06.877 回答
1

不幸的是,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]*)$";
于 2012-08-08T10:14:44.533 回答
-1

[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]*

于 2012-08-08T11:22:56.807 回答