用于密码验证的正则表达式返回false以获取正确的密码

时间:2014-05-19 07:13:29

标签: c# regex

我试图编写一个正则表达式来验证密码,但它对有效密码返回false。

密码必须至少包含以下3项内容:

  • 位数
  • 大写字母
  • 小写字母
  • 特殊字符

密码长度没有限制。

这是我的尝试:

@"^(?=(.*\d){3})(?=(.*[a-z]){3})(?=(.*[A-Z]){3})(?=(.*[^a-zA-Z\d]){3})$"

另外,我完全知道如何在不使用正则表达式的情况下执行此操作。但是,这是一项大学任务,我们被告知必须使用它们。

1 个答案:

答案 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}).*$"