正则表达式匹配:密码必须包含大小写字母、数字和特殊字符(长度大于8位)

4,393 阅读1分钟

// 密码必须包含数字大小写字母特殊字符str

^(?=.[0-9])(?=.[A-Z])(?=.[a-z])(?=.[!@#%^&*?]).{8,16}$

export function isValidPassword(str){

const reg=/^(?=.[0-9])(?=.[A-Z])(?=.[a-z])(?=.[!@#%^&*?]).{8,16}$/;

return reg.test(str);

}

(?=.[0-9])
任意字符串后有一数字
(?=.
[a-z])
任意字符串后有一小写字母
(?=.[A-Z])
任意字符串后有一大写字母
(?=.
[!@#$%^&*?])
任意字符串后有一特殊字符\

.{8,16}
8-16位任意字符

  const reg=/^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*?]).{8,16}$/;
  console.log(reg.test("123546aA!"),"123546aA!") //true '123546aA!'
  console.log(reg.test("12354678"),"12354678")  //false '12354678'
  console.log(reg.test("12354678a"),"12354678a")  //false '12354678a'
  console.log(reg.test("12354678aA"),"12354678aA")  //false '12354678aA'
  console.log(reg.test("12354678a!"),"12354678a!")  //false '12354678a!'
  console.log(reg.test("12354678A!"),"12354678A!")  // false '12354678A!'
  
  
  封装
  export function isValidPassword(str){ 
      const reg=/^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#%^&*?]).{8,16}$/;
      return reg.test(str);
  }
  
  使用
  import { isvalidPhone ,isValidPassword} from "@/utils/validate";
  var ValidPassword = (rule, value, callback) => {
  if (value && !isValidPassword(value)) {
    callback(new Error("请输入同时带有大小写字母,数字,特殊字符的八位以上密码"));
    } else {
    callback();
    }
  };
  
  
  data(){
      return{
          rules:{
              password: [{ required: true, message: "密码不能为空", trigger: "blur" },
                         { trigger: "blur", validator: ValidPassword }]
          }
      }
  }
  
  
  
  

不知道为什么$字符写出来会被改动,我先去掉了,各位写的同学手动加上哈