1、php版本
<?php //同时包括小写字母、大写字母、数字和特殊字符,而且长度在8位以上 $pattern = '/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/'; // 测试字符串 $password = "mZkj123456#!"; if (preg_match($pattern, $password)) { echo "密码符合要求!"; } else { echo "密码不符合要求!"; } //返回 密码符合要求! ?>
2、javascript版本
<script> function validatePassword(password) { const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/; return regex.test(password); } // 测试密码 console.log(validatePassword('Az12345556#!')); // true console.log(validatePassword('password1!')); // false console.log(validatePassword('PASSWORD1!')); // false console.log(validatePassword('12345678')); // false (没有字母) console.log(validatePassword('Password1')); // false (没有特殊字符) </script>
3、如果使用了formvalidator.js插件,上面的js脚本没法验证通过,可以使用functionValidator自定义函数来封装上面的代码,具体代码如下
$("#new_password").formValidator({empty:false,onshow:"<?php echo L('not_change_the_password_please_leave_a_blank')?>",onfocus:"<?php echo L('password').L('between_6_to_20')?>"}).functionValidator({ fun: validatePassword, onerror:'密码长度不低于8位,且需包含字母大小写、数字和特殊字符!' }).inputValidator({min:6,max:20,onerror:"<?php echo L('password').L('between_6_to_20')?>"});
即在原来的验证基础上,添加了如下代码:
functionValidator({ fun: validatePassword, onerror:'密码长度不低于8位,且需包含字母大小写、数字和特殊字符!' })
function validatePassword(password) { var val=$("#new_password").val(); const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/; return regex.test(val); }