您所追求的正则表达式很可能非常庞大且难以维护,尤其是对于不那么熟悉正则表达式的人。
我认为分解您的正则表达式并一次执行一次会更容易。可能还需要做更多的工作,但是我敢肯定,维护和调试它会更容易。这还将使您能够向用户(不仅仅是
InvalidPassword)提供更多定向错误消息,这将改善用户体验。
从我所看到的来看,您在regex方面相当流利,所以我认为为您提供正则表达式来做您需要的事情是徒劳的。
看到您的评论,这就是我的处理方式:
必须为八个字符长:为此,您不需要正则表达式。使用该
.Length
属性应该足够了。包括一个大写字母:您可以使用
[A-Z]+
正则表达式。如果字符串包含至少一个大写字母,则此正则表达式将产生true
。一个特殊字符:可以使用
W
匹配任何非字母或数字的字符,也可以使用诸如此类的东西[!@#]
来指定特殊字符的自定义列表。不过,请注意字符如$
,^
,(
和)
是在正则表达式语言的特殊字符,所以需要进行转义像这样:$
。简而言之,您可以使用W
。字母数字字符:使用
w+
时应匹配任何字母,数字和下划线。
查看本教程以获取更多信息。



