创建密码正则表达式

时间:2013-09-13 15:20:24

标签: asp.net regex

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

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

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

我正在使用asp.net的RegularExpressionValidator

2 个答案:

答案 0 :(得分:3)

这种模式应该有效:

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

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

如果你也想允许数字,这种模式应该有效:

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

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

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

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

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

答案 1 :(得分:2)

你当前的正则表达式不起作用,因为它会接受来自第9个字符的特殊字符(事实上第9个字符之后的任何内容,甚至是第26个字符,因为你没有字符串锚的结尾)。

你可能想要这样的东西:

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

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

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

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

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

regex101 demo