密码正则表达式验证:防止空格

5
我正在尝试遵守以下密码规则:
必须是6到15个字符,包括至少一个小写字母、一个大写字母和至少一个数字。它还不应包含空格。
现在,除了空格之外,我已经做到了:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{6,15}$

问题是,它允许空格。

在寻找解决方法后,我尝试使用\s,但这会破坏我的小写和大写要求。我还看到另一个建议是用+替换*,但那似乎破坏了整个东西。

澄清一下,不幸的是,这是客户的要求,我通常不会对密码如此严格。


4
为什么要禁止密码中的空格?没必要这样做。应该让密码尽可能长,并允许使用所有字符。其他任何限制都是愚蠢的。 - David Arno
2
然后告诉你的客户他们的需求不好。作为一名专业的开发者,你有责任以专业的方式行事,包括在必要时说“不”。 - David Arno
3
我们正在谈论一个重要客户,他们可以得到任何他们想要的东西。我认为这并不是一个惊天动地的要求,所以没有拒绝的必要。 - Mathew Thompson
1
@DavidArno:一个专业人士还必须考虑其他因素,并在必要时取得可行的平衡。客户可能正在响应其客户、供应商、监管需求等要求。一个专业人士不会只是说,“我是对的,你是错的,我拒绝做这个。”一个专业人士会说,“这是我推荐的方案,以及我为什么推荐它。让我们找到最适合您业务需求的解决方案。” - David
2
@David 让我详细说明一下,客户已经有一个系统,我们正在向该系统发送这些凭据。如果它们不匹配,我们将通过 API 收到异常。与其将其包装在 try catch 中,最好在发送之前进行验证。 - Mathew Thompson
显示剩余6条评论
1个回答

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

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


@Toto:非常感谢。我发现回答一个看似简单的问题竟然很困难。 - Leo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接