所以我必须验证一个只支持小写和大写字符且必须有at least one digit
的模式,必须在8到16之间。
到目前为止我已经
了ValidationExpression="(^[A-Za-z0-9](?=.*\d){8,16})$"
似乎没有用,有什么提示吗?
即。
abcdef will not work
abcdef12 will work
答案 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
等密码。