验证模式在asp.net webform的ValidationExpression中:至少需要一位数

时间:2013-08-08 15:24:47

标签: asp.net regex validation webforms

所以我必须验证一个只支持小写和大写字符且必须有at least one digit的模式,必须在8到16之间。

到目前为止我已经

ValidationExpression="(^[A-Za-z0-9](?=.*\d){8,16})$"

似乎没有用,有什么提示吗?

即。

abcdef will not work 
abcdef12 will work

3 个答案:

答案 0 :(得分:2)

问题:

(^[A-Za-z0-9](?=.*\d){8,16})$

这是在你的字符串中寻找一个匹配:
- 包含[A-Za-z0-9]中的单个项目 - 预测.*\d,前瞻8-16次。

可能的解决方案:

{8,16}放在[A-Za-z0-9]而不是前瞻,然后将前瞻移到前面:

^(?=.*\d)[A-Za-z0-9]{8,16}$

此外,如果您希望至少有一个大写和小写字母,您可以这样做:

^((?=.*\d)(?=.*[a-z])(?=.*[A-Z])[A-Za-z0-9]{8,16})$

答案 1 :(得分:1)

我会分别检查要求和约束。首先,您要检查输入是否为字母数字和正确的长度:

ConstraintsExpression="^([A-Za-z\d]){8,16}$"

然后,检查至少有一个数字:

RequirementsExpression="\d"

第二个正则表达式中没有^$,因为您希望能够在输入中的任何位置找到它。如果它完全匹配,则至少有一个数字。

答案 2 :(得分:1)

我建议这个正则表达式,如果你的意思是字符串应该只有大写字母,小写字母和至少一个数字,最后在所需的长度之间:

^(?=.*[0-9])[A-Za-z0-9]{8,16}$

如果是密码,我不确定为什么它只有字母数字字符。在make密码中添加符号更强!

要允许任何字符,同时确保至少有一个数字,一个小写和一个大写,您可以使用:

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}$

允许创建P@$5W0rd等密码。