【问题标题】:Password Regex Validation: Preventing Spaces密码正则表达式验证:防止空格
【发布时间】:2013-09-27 10:02:32
【问题描述】:

好的,所以我正在尝试遵守以下密码规则:

必须是 6 到 15 个字符,包括至少一个小写字母、一个大写字母和至少一个数字。它也应该不包含空格。

现在,除了空格之外的所有内容,我都有:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{6,15}$

问题是,允许空格。

环顾四周后,我尝试使用\s,但这搞乱了我的小写和大写要求。我还看到另一个建议用+ 替换*,但这似乎破坏了整个事情。

如果您想进行实时测试,我已经创建了REFiddle

为了澄清,不幸的是,这是客户的要求,我通常对密码从来没有这么严格。

【问题讨论】:

  • 为什么,为什么,为什么要禁止密码中的空格?只是不要这样做。允许密码尽可能长并允许所有字符。其他的都是愚蠢的。
  • 然后告诉您的客户他们的要求很差。作为专业开发人员,您有责任以专业的方式行事,包括在必要时说“不”。
  • @DavidArno 我们在这里谈论的是一个主要客户,他们可以拥有任何他们想要的东西。我不认为这是一个惊天动地的请求,所以没有必要拒绝。
  • @DavidArno:专业人士还必须考虑其他因素,并在必要时取得可行的平衡。客户可能正在响应他们的客户之一的要求、供应商、监管需求等。专业人士不会只是说:“我是对的,你错了,我拒绝这样做这。”一位专业人士说:“这是我推荐的,这就是我推荐它的原因。让我们找到最适合您业务需求的解决方案。”
  • @David 让我详细说明一下,客户端已经有一个系统,我们将这些凭据发送到。如果它们不匹配,我们将通过 API 获得异常。与其将其包装在 try catch 中,不如在发送之前验证

标签: c# regex


【解决方案1】:

怎么样:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)\S{6,15}$

\S 代表任何非空格字符。

【讨论】:

  • @Toto:非常感谢。对于一个看似如此简单的问题,我发现很难找到答案。
猜你喜欢
  • 2014-01-28
  • 2011-02-20
  • 1970-01-01
  • 2011-05-06
  • 2016-10-19
  • 2011-03-24
  • 1970-01-01
相关资源
最近更新 更多