证件校验正则

简介: 证件校验正则

身份证校验

function checkIDCard(idcode) {
  // 正则思路
  /*
    第一位不可能是0
    第二位到第六位可以是0-9
    第七位到第十位是年份,所以七八位为19或者20
    十一位和十二位是月份,这两位是01-12之间的数值
    十三位和十四位是日期,是从01-31之间的数值
    十五,十六,十七都是数字0-9
    十八位可能是数字0-9,也可能是X
    */
  var idcard_patter =
        /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X]|[x])$/

  // 判断格式是否正确
  var format = idcard_patter.test(idcode)

  return !!format
}

手机号码校验

function checkPhone(phone) {
  if (!(/^1[3456789]\d{9}$/.test(phone))) {
    return false
  } else {
    return true
  }
}

校验军官证

function isOfficerCard(card) {
  // 规则: 军/兵/士/文/职/广/(其他中文) + "字第" + 4到8位字母或数字 + "号"
  // 样本: 军字第2001988号, 士字第P011816X号
  var reg = /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/
  if (reg.test(card) === false) {
    return {
      'status': 0,
      'msg': '军官证号不合规'
    }
  } else {
    return {
      'status': 1,
      'msg': '校验通过'
    }
  }
}

护照

function isPassPortCard(card) {
  // 规则: 14/15开头 + 7位数字, G + 8位数字, P + 7位数字, S/D + 7或8位数字,等
  // 样本: 141234567, G12345678, P1234567
  var reg = /^([a-zA-z]|[0-9]){5,17}$/
  if (reg.test(card) === false) {
    return {
      'status': 0,
      'msg': '护照号码不合规'
    }
  } else {
    return {
      'status': 1,
      'msg': '校验通过'
    }
  }
}

港澳居民来往内地通行证

function isHKCard(card) {
  // 规则: H/M + 10位或6位数字
  // 样本: H1234567890
  var reg = /^([A-Z]\d{6,10}(\(\w{1}\))?)$/
  if (reg.test(card) === false) {
    return {
      'status': 0,
      'msg': '港澳居民来往内地通行证号码不合规'
    }
  } else {
    return {
      'status': 1,
      'msg': '校验通过'
    }
  }
}

台湾身份证

function checkTWIdCard(idNo) {
  if (idNo == null || idNo == '') {
    return {
      'respCode': '9',
      'respDesc': '空值'
    }
  }
  if (idNo.length != 10) {
    return {
      'respCode': '1',
      'respDesc': '國民身分證統一編號長度不正確(10)'
    }
  }
  var eng = idNo.substring(0, 1)
  var num = idNo.substring(1, 10)
  var sex = idNo.substring(1, 2)
  eng = eng.toUpperCase()
  var regNum = /^[0-9]+.?[0-9]*/ // 判断字符串是否为数字//判断正整数/[1−9]+[0−9]∗]∗/;//判断字符串是否为数字//判断正整数/[1−9]+[0−9]∗]∗/
  var regEng = /^[A-Za-z]+$/
  if (!regNum.test(num)) {
    return {
      'respCode': '1',
      'respDesc': '國民身分證統一編號不正確'
    }
  }

台湾居民来往大陆通行证

function isTWCard(card) {
  // 规则: 新版8位或18位数字, 旧版10位数字 + 英文字母
  // 样本: 12345678 或 1234567890B
  var reg = /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/
  if (reg.test(card) === false) {
    return {
      'status': 0,
      'msg': '台湾居民来往大陆通行证号码不合规'
    }
  } else {
    return {
      'status': 1,
      'msg': '校验通过'
    }
  }
}
相关文章
|
3月前
|
Java 数据库连接 测试技术
自定义校验注解,优雅的实现手机号,身份证号的格式校验!
本文介绍了如何创建自定义校验注解来实现手机号和身份证号的格式校验,包括定义注解、实现校验逻辑、将注解应用于模型类,以及常用的校验器库和框架,旨在提高代码的可维护性和减少重复的校验逻辑。
【正则表达式】正则表达式同时支持验证手机号码和座机号码
【正则表达式】正则表达式同时支持验证手机号码和座机号码
|
前端开发
手机199开头的号码的正则验证
手机199开头的号码的正则验证
100 2
|
前端开发 JavaScript
JS前端实现身份证号码合法性校验(校验码校验)
JS前端实现身份证号码合法性校验(校验码校验)
680 0
|
前端开发 数据安全/隐私保护
常见的正则校验
常见的正则校验
72 0
|
JavaScript
正则表达式判断是不是手机号
正则表达式判断是不是手机号
96 0
|
数据格式
用正则表达式校验手机号和邮箱
用正则表达式校验手机号和邮箱
832 0
手机号码的正则表达式校验
看到网上很多代码都很复杂,还包括以中文开头的86,17951,其实谁会填这么多,无非是检验一下他们是否位数对不对,开头有没有写错而已。下面我们从百度百科的手机号码历程来看:现在的手机号码段有联通、移动和电信。
4586 0

热门文章

最新文章