一、接受了一个项目,密码验证方面需要前后端使用一样的验证规则。我把后端的验证规则直接给我前端同事用,反正在前端中出现编译出错。
二、对比了一下两个正则,发现是Java的正则里面有很多转义的\
,然后查询了一下Java与JavaScript正则表达式的转义的规则,发现两个是不一样的。区别如下:(参考了此文章:[正则表达式]JavaScript与Java中正则表达式的区别)
三、在后端中的Java的正则为:
String regex = "^(?:(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))(?!.*(.)\\1{2,})[A-Za-z0-9!{ }~<>,;:_=?*+#.\"&§%°()\\|\\[\\]\\-\\$\\^\\@\\/]{8,64}$";
在JavaScript中的正则为:
/^(?:(?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))(?!.*(.)\1{2,})[A-Za-z0-9!{ }~<>,;:_=?*+#."&§%°()\|\[\]\-\$\^\@\/]{8,64}$/