密码validation正则expression式

我想获得一个正则expression式,执行以下操作:

  1. 确保没有空白字符
  2. 最小长度为8
  3. 确保至less有:
    • 一个非alpha字符
    • 一个大写字符
    • 一个小写字符

我发现这个正则expression式:

((?=.*[^a-zA-Z])(?=.*[az])(?=.*[AZ])(?!\s).{8,}) 

其中需要照顾上面的第2点和第3点,但我如何将第一个要求添加到上述正则expression式?

我知道我可以做两个expression式然后

 \s 

但是我想把它放在一个整体,我试着做一些像?!\s东西,但是我却无法完成它的工作。 有任何想法吗?

 ^(?=.*[^a-zA-Z])(?=.*[az])(?=.*[AZ])\S{8,}$ 

应该做。 但请注意,您只是validationASCII字母。 是不是你的要求的信件?

\S意思是“除空白以外的任何字符”,所以通过使用这个而不是点,并通过锚定在string的开始和结束的正则expression式,我们确保string不包含任何空格。

我还删除了整个expression式中不必要的括号。

Tim的答案效果很好,并且很好的提醒了用正则expression式解决同样的问题的方法有很多,但是你自己正在寻找解决scheme的正确方向。 如果你已经把(?!\ s)改成(?!。* \ s),并且把^和$ anchors添加到最后,它就会工作。

 ^((?=.*[^a-zA-Z])(?=.*[az])(?=.*[AZ])(?!.*\s).{8,})$