我试图得到一个执行以下操作的正则表达式:
我找到了这个正则表达式:
((?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])(?!\s).{8,})
Run Code Online (Sandbox Code Playgroud)
它处理上面的第2点和第3点,但是如何将第一个要求添加到上面的正则表达式?
我知道我可以做两个表达式然后上面的那个
\s
Run Code Online (Sandbox Code Playgroud)
但是我想把它全部集中在一起,我尝试做类似的事情,?!\s
但我无法让它发挥作用.有任何想法吗?
Tim*_*ker 17
^(?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])\S{8,}$
Run Code Online (Sandbox Code Playgroud)
应该做.但请注意,您只是验证ASCII字母.是Ä
不是你要求的信?
\S
表示"除了空格之外的任何字符",因此通过使用此字符而不是点,并通过将正则表达式锚定在字符串的开头和结尾,我们确保该字符串不包含任何空格.
我还删除了整个表达式周围不必要的括号.
Tim的答案效果很好,并且很好地提醒我们有很多方法可以解决同一个问题,但是你正在寻找自己找到解决方案的正确方法.如果您已将(?!\ s)更改为(?!.*\s)并将^和$锚添加到结尾,则可以正常工作.
^((?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])(?!.*\s).{8,})$
Run Code Online (Sandbox Code Playgroud)