0

现在我需要为网站复制一个密码表达式验证器。密码长度只需 8-25 个字符(仅限字母字符)。我认为这很奇怪并且一直在使用这个正则表达式

(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,25})

但在整个密码中包含大写字母、特殊字符和/或数字必须是可选的。我不是特别擅长在有可选字符的地方构建正则表达式。任何帮助将不胜感激。

我正在使用 asp.net 的RegularExpressionValidator.

4

2 回答 2

3

这种模式应该有效:

^[a-zA-Z]{8,25}$

它匹配由 8 到 25 个拉丁字母组成的字符串。

如果您也想允许数字,则此模式应该有效:

^[a-zA-Z0-9]{8,25}$

它匹配由 8 到 25 个拉丁字母或十进制数字组成的字符串。

如果您还想允许特殊字符,则此模式应该有效:

^[a-zA-Z0-9$@!]{8,25}$

它匹配由 8 到 25 个拉丁字母、十进制数字或符号组成的字符串$@!(当然,您可以很容易地添加到该集合中)。

于 2013-09-13T15:23:03.713 回答
2

您当前的正则表达式将不起作用,因为它将接受从第 9 个字符开始的特殊字符(实际上,第 9 个字符之后的任何字符,甚至是第 26 个字符,因为您没有字符串锚的结尾)。

你可能想要这样的东西:

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

这首先确保有小写字母(你提到大写和数字是可选的,所以这使得强制小写)然后只允许大写和数字。

编辑:要允许任何特殊字符,您可以使用:

^(?=.*[a-z]).{8,25}$

我对您的问题的理解是密码的第一个要求是它必须包含小写字母字符。现在的选项是它还可以包含其他字符。如果这不正确,请告诉我。

正则表达式101演示

于 2013-09-13T15:25:31.117 回答