

export function checkPassword(str){
  const SPEC_CHARACTERS = " !\"#$%&'()*+,-./:;<=>?@\\]\\[^_`{|}~";
  // 纯字母
  const character = /[a-zA-Z]{1,}$/;
  // 纯数字
  const numberic = /[0-9]{1,}$/;
  // 字母和数字
  const number_and_character = /((^[a-zA-Z]{1,}[0-9]{1,}[a-zA-Z0-9]*)+)|((^[0-9]{1,}[a-zA-Z]{1,}[a-zA-Z0-9]*)+)$/;


  let isLegal = false;
  let hasSpecChar = false;
  const charArray = str.split("");
  charArray.forEach(item=>{
    if (SPEC_CHARACTERS.indexOf(item) != -1) {
      hasSpecChar = true;
      // 替换此字符串
      str = str.replace(item, ' ');
    }
  })

  const excSpecCharStr = str.replace(" ", "");
  const isPureNum = numberic.test(excSpecCharStr);
  const isPureChar = character.test(excSpecCharStr);
  const isNumAndChar = number_and_character.test(excSpecCharStr);
  isLegal = ((isPureNum && hasSpecChar)
    || (isPureChar && hasSpecChar) || isNumAndChar && hasSpecChar) || isNumAndChar;
  return isLegal;
}

export function validatePasswordCH(password) {
  // 密码最少包含数字丶字母丶特殊字符中的三种，长度在8到20位
  const regex = /^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[\W_]).{8,20}$/;

  // 密码最少包含数字丶字母丶特殊字符中的三种，长度在8到20位(除了加号，巡访后台带+豪会自动过滤；2024-5-8 10:52:35)
  // const regex = /^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9\s+]).{8,20}$/;
  return regex.test(password);
}
