关于正则表达式的另一个问题。 这是我的要求:
以下是我的想法
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[-=+/\\]`~!@#$%^&*()_+\\[;',.{}|:\\\"<>?])(?=^\\p{ASCII}*$)(?=\\S+$).{8,}$
但这不适用于\\Admin123
感谢任何帮助。
更新 谢谢@Pshemo。想知道,如果有更短的方法吗?而不是在正则表达式本身中包含所有特殊字符。
答案 0 :(得分:2)
我建议你使用更具可读性的重构正则表达式:
final String re =
"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\\p{Punct})[\\p{ASCII}&&[\\S]]{8,}$";
RegEx分手:
^
:开始(?=.*[0-9])
:预见断言我们至少有一位数字(?=.*[a-z])
:预见断言我们至少有一个小写字母(?=.*[A-Z])
:预见断言我们至少有一个大写字母(?=.*\\p{Punct})
:预见断言我们至少有一个标点字符[\\p{ASCII}&&[\\S]]{8,}
:用于匹配8个或更多 ASCII 和非白色空间字符的交叉复合字符类$
:结束