验证输入格式规范,中国手机号、身份证号、ip地址、url地址、邮箱

/**
 * 邮箱
 * @param {*} s
 */
export function isEmail(s) {
  return /^([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(
    s
  );
}

/**
 * 手机号码
 * @param {*} s
 */
export function isMobile(s) {
  return /^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/.test(
    s
  );
}

/**
 * 电话号码
 * @param {*} s
 */
export function isPhone(s) {
  return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s);
}

/**
 * URL地址
 * @param {*} s
 */
export function isURL(s) {
  return /^http[s]?:\/\/.*/.test(s);
}

/**
 * IP地址
 * @param {*} s
 */
export function isIP(s) {
  return (
    /((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))/.test(
      s
    ) || /^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}$/.test(s)
  );
}

/**
 * 检查身份证号码
 * @param {*}value
 */
export function isIdCard(value) {
  var arrVerifyCode = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];
  var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
  var Checker = [1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1];
  if (value.length != 15 && value.length != 18) {
    return "身份证号共有15位或18位";
  }
  var Ai =
    value.length == 18
      ? value.substring(0, 17)
      : value.slice(0, 6) + "19" + value.slice(6, 16);
  if (!/^\d+$/.test(Ai)) {
    return "身份证除最后一位外,必须为数字";
  }
  var yyyy = Ai.slice(6, 10),
    mm = Ai.slice(10, 12) - 1,
    dd = Ai.slice(12, 14);
  var d = new Date(yyyy, mm, dd),
    now = new Date();
  var year = d.getFullYear(),
    mon = d.getMonth(),
    day = d.getDate();
  if (year != yyyy || mon != mm || day != dd || d > now || year < 1800) {
    return "身份证格式错误!";
  }
  for (var i = 0, ret = 0; i < 17; i++) {
    ret += Ai.charAt(i) * Wi[i];
  }
  Ai += arrVerifyCode[(ret %= 11)];
  // console.log('-------Ai校验', Ai);
  if (value.length == 18 && value != Ai) {
    return "身份证号码错误!";
  } else {
    return "success";
  }
}

 

posted @ 2021-08-18 17:41  吃好每一口饭  阅读(286)  评论(0)    收藏  举报