1

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

到目前为止我有

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

这似乎不起作用,有什么提示吗?

IE

abcdef will not work 
abcdef12 will work
4

3 回答 3

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})$
于 2013-08-08T15:36:43.667 回答
1

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

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

如果是用于密码,我不确定为什么它应该只有字母数字字符。添加符号使密码更强大!

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

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

将允许创建密码,例如P@$5W0rd.

于 2013-08-08T15:36:43.163 回答
1

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

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

然后,检查是否至少有一位数字:

RequirementsExpression="\d"

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

于 2013-08-08T15:30:38.447 回答