【问题标题】:Regular Expression for Password - Exclude certain characters密码的正则表达式 - 排除某些字符
【发布时间】:2013-10-31 03:27:51
【问题描述】:

我需要开发具有以下标准的密码验证: - 至少有一个大写字母; - 至少一个小写字母; - 至少在数字上; - 可能包含一些特殊字符; - 长度必须在 8 到 12 之间;

我开发了这个:

(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!#$&%*_+-=?|]).{8,12}

但是最近需求变了,我需要实现一个字符黑名单,例如: - 密码不得包含字母“o”或“O”; // Oscar 的小写和大写 O - 密码不能有数字 0; // 零号

如何保持初始要求并添加这些新验证? 谢谢

JB

【问题讨论】:

  • 您为什么要关心密码有哪些字母或没有哪些字母? IE。 “无 O”规则的意义何在?
  • 我会告诉你的老师想出一个真实世界的场景。你的“问题”读作是一些被遗忘的测试中的一些问题,很久以前为了追求现实而放弃了:)

标签: regex validation passwords blacklist


【解决方案1】:

问题是连字符出现在字符类的中间。连字符只有在字符类中的第一个或最后一个时才能保持未转义,因此以下正则表达式应该可以工作:

(?!.*[oO0])(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!#$&%*+=?|-]).{8,12}

现场演示:http://www.rubular.com/r/AI928rE8Aj

【讨论】:

  • 您好,感谢您的反馈,但我并不清楚您的回答。我拥有的正则表达式可以很好地满足初始要求。但我需要知道我如何拥有例如: - 至少 1 个小写字母,不包括我拥有的字母 'o': (?=.*[az]) 如果我将其更改为: (?=.*[ a-np-z]) 它只会验证至少一个从“a”到“n”和“p”到“z”的小写字母。如果出现“o”,我希望验证失败
  • 您好,再次感谢您的反馈。我之前尝试过这种方法,但不起作用,因为它只排除了完全具有“o”、“O”或/和“0”的密码......或以这些字符之一结尾我做过的简单测试:@"( ?!.*[abc])(?=.*[az]).{1,10}";测试密码:“a” - 失败 “b” - 失败 “c” - 失败 “qwerty” - 通过 “hello” - 通过 “abc” - 失败 “helloa” - 失败 “heallo” - 通过 “ahello” - 通过跨度>
  • 不确定,请参阅此演示:rubular.com/r/GWGNG5WiYz 和案例 #2 和 3 它拒绝 aoC!Xyz1 但接受 abC!Xyz1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多