我试图编写一个正则表达式来验证密码,但它对有效密码返回false。
密码必须至少包含以下3项内容:
密码长度没有限制。
这是我的尝试:
@"^(?=(.*\d){3})(?=(.*[a-z]){3})(?=(.*[A-Z]){3})(?=(.*[^a-zA-Z\d]){3})$"
另外,我完全知道如何在不使用正则表达式的情况下执行此操作。但是,这是一项大学任务,我们被告知必须使用它们。
答案 0 :(得分:3)
我认为您唯一的问题是您不会匹配任何字符。
@"^(?=(.*\d){3})(?=(.*[a-z]){3})(?=(.*[A-Z]){3})(?=(.*[^a-zA-Z\d]){3})$"
仅包含您的前瞻,确保您的条件。这意味着基本上你需要具有前瞻的条件,另一方面真正的模式只有^$
匹配空字符串。这个正则表达式永远不会真实。
只需在末尾添加.*
即可实际匹配字符。前瞻性涵盖了您的要求。
@"^(?=(.*\d){3})(?=(.*[a-z]){3})(?=(.*[A-Z]){3})(?=(.*[^a-zA-Z\d]){3}).*$"