所以我必须验证一个只支持小写和大写字符的模式,并且必须at least one digit
在 8 到 16 之间。
到目前为止我有
ValidationExpression="(^[A-Za-z0-9](?=.*\d){8,16})$"
这似乎不起作用,有什么提示吗?
IE
abcdef will not work
abcdef12 will work
所以我必须验证一个只支持小写和大写字符的模式,并且必须at least one digit
在 8 到 16 之间。
到目前为止我有
ValidationExpression="(^[A-Za-z0-9](?=.*\d){8,16})$"
这似乎不起作用,有什么提示吗?
IE
abcdef will not work
abcdef12 will work
问题:
(^[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})$
如果您的意思是字符串应该只有大写字母、小写字母和至少一个数字,并且最后在所需长度之间,我建议使用这个正则表达式:
^(?=.*[0-9])[A-Za-z0-9]{8,16}$
如果是用于密码,我不确定为什么它应该只有字母数字字符。添加符号使密码更强大!
要允许任何字符,同时确保至少有一个数字、一个小写和一个大写,您可以使用以下命令:
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}$
将允许创建密码,例如P@$5W0rd
.
我会分别检查要求和约束。因此,首先,您将检查输入是否为字母数字且长度正确:
ConstraintsExpression="^([A-Za-z\d]){8,16}$"
然后,检查是否至少有一位数字:
RequirementsExpression="\d"
第二个正则表达式中没有^
or $
,因为您希望能够在输入的任何位置找到它。如果完全匹配,则至少有一位数字。