身份证验证(工具类ES6)

说明: 函数入口必须有值,可以是Number类型,也可以是String类型 。(其他类型报错)
flag参数选填:默认是false,返回的是一个布尔值,当验证成功的时候,返回的是true。验证失败,抛出异常。
当flag的参数是true的时候,返回的是IDCard的值,String类型。相当于将数据过滤验证了一遍,当有大量数据是,可以走这一个API。

/**
 * 校验身份证是否合格的方法
 * @param Card
 * @returns {boolean}
 */
export default function isCard(Card,flag = false) {
//  查询输入日期是否有效
//  1.查看isCard是不是数字类型的。如果是数字类型,就转为字符串。
  let newVar = typeof Card;
  // console.log(newVar);
  if(newVar == "number"){
  //    是数字,就转
    Card = Card.toString();
  }

//判断身份证的位数
  if(Card.length!== 18){
    throw '请检查身份证的位数,本函数只支持18位身份证'
    return false;
  }
//  1.把年月日剥离出来
  const  year = Card.slice(6,10);
  // console.log(year);
  const month = Card.slice(10,12);
  // console.log(month);
  const day = Card.slice(12,14);
  const s = Card.slice(17);
  // console.log(s);
  // console.log(day);
  //2.定义月份的字典;
  const set = new Set().add('01').add('02').add('03').add('04').add('05').add('06').add('07').add('08').add('09').add('10').add('11').add('12');;
  // console.log(set);
  //3.判断月份是否不在0-12的范围内
  if(!set.has(month)){
    //说明没有这个月份
    throw '月份不在范围内';
  }else {
  //  4.说明月份输入是正确的,那么按照1,3,5,7,8,10,12的口诀,判断他们的天数
    if(month=='01'||month=='03'||month=='05'||month=='07'||month=='08'||month=='10'||month=='12'){
      if(day>31){
        throw '该月份只有31天!!';
        return false;
      }
    }else if(month=='04'||month=='06'||month=='09'|| month=='11'){
      if(day>30){
        throw '该月份只有30天'
        return false;
      }
    }else {
    //  5.特殊的2月,要判断他是闰年还是平年;
      if (year % 400 !== 0 && year %4 == 0){
        //说明是平年
        if(day>28){
          throw '该年是平年,只有28天'
          return false;
        }else {
          if (day>29){
            throw '该年是润年,只有29天'
            return false;
          }
        }
      }
    }
  }
  if(!flag){
    return  true;
  }else {
    //统一为大写
    return Card.toUpperCase();
  }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值