一尘不染

检查密码是否为“ 8个字符,包括1个大写字母,1个特殊字符,字母数字字符”的正则表达式

c#

我想要一个正则表达式来检查

密码必须是八个字符,包括一个大写字母,一个特殊字符和字母数字字符。

这是我的验证表达式,它包含八个字符,包括一个大写字母,一个小写字母和一个数字或特殊字符。

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"

如何为必须包含八个大写字母(一个大写字母,一个特殊字符和字母数字字符)的密码编写密码?


阅读 913

收藏
2020-05-19

共1个答案

一尘不染

您所追求的正则表达式很可能非常庞大且难以维护,尤其是对于不那么熟悉正则表达式的人。

我认为分解您的正则表达式并一次执行一次会更容易。可能还需要做更多的工作,但是我敢肯定,维护和调试它会更容易。这还将使您能够向用户(不仅仅是Invalid Password)提供更多定向错误消息,这将改善用户体验。

从我所看到的来看,您在regex方面相当流利,所以我认为为您提供正则表达式来做您需要的事情是徒劳的。

看到您的评论,这就是我的处理方式:

  • 必须为八个字符长:为此,您不需要正则表达式。使用该.Length属性应该足够了。

  • 包括一个大写字母:您可以使用[A-Z]+正则表达式。如果字符串包含至少一个大写字母,则此正则表达式将产生true

  • 一个特殊字符:可以使用\W匹配任何非字母或数字的字符,也可以使用诸如此类的东西[!@#]来指定特殊字符的自定义列表。不过,请注意字符如$^()是在正则表达式语言的特殊字符,所以需要进行转义像这样:\$。简而言之,您可以使用\W

  • 字母数字字符:使用\w+时应匹配任何字母,数字和下划线。

查看教程以获取更多信息。

2020-05-19