正则匹配:需包含大写字母,小写字母、数字、特殊符号中的三类及以上

需包含大写字母,小写字母、数字、特殊符号中的三类及以上(汉字不要)

阅读 8k
3 个回答

单纯用正则不如用几个条件判断简单

function demo (str) {
  var count = 0;
  if(/\p{Unified_Ideograph}/u.test(str)) {
    return alert('不允许输入汉字')
  }
  if(/\d/.test(str)) count++
  if(/[a-z]/.test(str)) count++
  if(/[A-Z]/.test(str)) count++
  if(/[_。%#@]/.test(str)) count++
  if(count < 3) {
    alert('需包含大写字母,小写字母、数字、特殊符号中的三类及以上')
  } else {
    alert('验证成功')
  }
}

有没有问题???
/((^(?=.*[a-z])(?=.*[A-Z])(?=.*[^A-Za-z0-9])[\da-zA-Z_\W]{8,16}$)|(^(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9])[\da-zA-Z_\W]{8,16}$)|(^(?=.*\d)(?=.*[a-z])(?=.*[^A-Za-z0-9])[\da-zA-Z_\W]{8,16}$)|(^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[\da-zA-Z_\W]{8,16}$))/

如楼上拆开校验最简单,也好维护

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进