常用校验方法

// 校验函数const checkFunc = (func) => { return func && (func.constructor === Function);};// 验证身份证export function isIdCard(id) { const format = /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}((
摘要由CSDN通过智能技术生成
// 校验函数
const checkFunc = (func) => {
   
  return func && (func.constructor === Function);
};

// 验证身份证
export function isIdCard(id) {
   
  const format = /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{
   4}(([1][9]\d{
   2})|([2]\d{
   3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{
   3}[0-9xX]$/;
  // 号码规则校验
  if (!format.test(id)) {
   
    return false;
  }
  // 区位码校验
  // 出生年月日校验   前正则限制起始年份为1900
  const year = id.substr(6, 4); // 身份证年
  const month = id.substr(10, 2); // 身份证月
  const date = id.substr(12, 2); // 身份证日
  const time = Date.parse(month + '-' + date + '-' + year); // 身份证日期时间戳date
  const nowTime = Date.parse(new Date()); // 当前时间戳
  const dates = (new Date(year, month, 0)).getDate(); // 身份证当月天数
  if (time > nowTime || date > dates) {
   
    return false;
  }
  // 校验码判断
  const c = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 系数
  const b = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; // 校验码对照表
  const idArray = id.split('');
  let sum = 0;
  for (let k = 0; k < 17; k++) {
   
    sum += parseInt(idArray[k]) * parseInt(c[k]);
  }
  if (idArray[17].toUpperCase() !== b[sum % 11].toUpperCase()) {
   
    return false;
  }
  return true;
}

// 验证统一社会信用代码
function isCreditCode(credNum) {
   
  let ret = false;
  if (credNum.length === 18) {
   
    var reg = /^([0-9ABCDEFGHJKLMNPQRTUWXY]{
   2})([0-9]{
   6})([0-9A-Z]{
   8})([0-9|X]{
   1})([0-9ABCDEFGHJKLMNPQRTUWXY]{
   1})$/;
    if (reg.test(credNum)) {
   
      var str = '0123456789ABCDEFGHJKLMNPQRTUWXY';
      var ws = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];
      let sum = 0;
      for (let i = 0; i < 17; i++) {
   
        sum += str.indexOf(credNum.charAt(i)) * ws[i];
      }
      let c18 = 31 - (sum % 31);
      if (c18 === 31) {
   
        c18 = '0';
      }

      if (str.charAt(c18) === credNum.charAt(17)) {
   
        ret = true;
      }
    }
  }
  return ret;
}

// 组织机构代码 true为真,false为假
function isOrgCode(orgCode) {
   
  var ret = false;
  if (orgCode) {
   
    //为了便于人工识别,应使用一个连接符“-”分隔本体代码与校验码。机读时,连接符省略。
    var reg = /^([0-9A-Z]){
   8}[0-9|X
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值