【发布时间】:2013-09-27 10:02:32
【问题描述】:
好的,所以我正在尝试遵守以下密码规则:
必须是 6 到 15 个字符,包括至少一个小写字母、一个大写字母和至少一个数字。它也应该不包含空格。
现在,除了空格之外的所有内容,我都有:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{6,15}$
问题是,允许空格。
环顾四周后,我尝试使用\s,但这搞乱了我的小写和大写要求。我还看到另一个建议用+ 替换*,但这似乎破坏了整个事情。
如果您想进行实时测试,我已经创建了REFiddle。
为了澄清,不幸的是,这是客户的要求,我通常对密码从来没有这么严格。
【问题讨论】:
-
为什么,为什么,为什么要禁止密码中的空格?只是不要这样做。允许密码尽可能长并允许所有字符。其他的都是愚蠢的。
-
然后告诉您的客户他们的要求很差。作为专业开发人员,您有责任以专业的方式行事,包括在必要时说“不”。
-
@DavidArno 我们在这里谈论的是一个主要客户,他们可以拥有任何他们想要的东西。我不认为这是一个惊天动地的请求,所以没有必要拒绝。
-
@DavidArno:专业人士还必须考虑其他因素,并在必要时取得可行的平衡。客户可能正在响应他们的客户之一的要求、供应商、监管需求等。专业人士不会只是说:“我是对的,你错了,我拒绝这样做这。”一位专业人士说:“这是我推荐的,这就是我推荐它的原因。让我们找到最适合您业务需求的解决方案。”
-
@David 让我详细说明一下,客户端已经有一个系统,我们将这些凭据发送到。如果它们不匹配,我们将通过 API 获得异常。与其将其包装在 try catch 中,不如在发送之前验证 。