js或者php正则实现密码8位及以上,且同时包括大写字母、小写字母、数字和特殊字符的代码

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);
}
js或者php正则实现密码8位及以上,且同时包括大写字母、小写字母、数字和特殊字符的代码

formvalidator.js利用自定义函数functionValidator封装密码验证正则密码长度8位及以上,且同时包括大写字母、小写字母、数字和特殊字符

 

 

 

相关推荐