姓名、证件号码相关校验规则

姓名校验相关

  • 允许输入中文、英文、数字、全角点字符、半角逗号、半角空格;不允许输入全角空格
let nameRegExp = /^([\u4E00-\u9FA5A-Za-z0-9\uFF0E\,\s](?!\u3000))+$/;
  • 全角点字符、半角逗号、半角空格在首尾、汉字中间有空格
let nameRegExp1 = /^[\uFF0E\,\s]|[\uFF0E\,\s]$|([^u4E00-u9FA5])(\s)(?=[^u4E00-u9FA5])/gi;
  • 汉字中间有空格
let nameRegExp2 = /([^u4E00-u9FA5])(\s)(?=[^u4E00-u9FA5])/g;

证件号码校验相关

  • 全部为相同的数字
let sameNumberRegExp = /^([0-9])\1+$/;
  • 全部为字母、数字
let allowLetterAndNumberRegExp = /^[A-Za-z0-9]+$/;
  • 字母或0 在首位
let letterOrZeroInFirstRegExp = /(^[A-Za-z0])/
  • 港澳通行证
let HKAndMacaoPassRegExp = /^[HMhm]\d{8}$/;
  • 香港居住证-810开头、字母数字结尾 共18位
let HKResidencePermitRegExp = /(^810)([A-Za-z0-9]{15}$)/;
  • 澳门居住证-820开头、字母数字结尾 共18位
let MacaoResidencePermitRegExp = /(^820)([A-Za-z0-9]{15}$)/;
  • 台湾通行证 必须包含数字;字母数字 共8位
let TaiwanPassRegExp = /((?=.*[0-9]))(^[A-Za-z0-9]{8}$)/;
  • 台湾居住证-830开头、字母数字结尾 共18位(至少包含一个数字规则,与820开头规则重叠)
let TaiwanResidencePermitRegExp = /(^820)([A-Za-z0-9]{15}$)/;
  • 外国人永久居留身份证-前3位为字母,后12位为数字
let AlienPermanentResidenceIDCardRegExp = /(^[A-Za-z]{3})([0-9]{12}$)/;
  • 空格不在首尾
let spaceInHeadOrTailRegExp = /(^(?!\s))(.*[^\s]$)/;
  • 年份1900-9999
let yearRegExp = /(^19[0-9]{2})|([2-9][0-9]{3})/;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
身份证件号码校验规则是指对身份证号码进行合法性校验,一般要求身份证号码必须符合国家规定的格式,并且校验位也要正确。 以下是身份证件号码校验规则的 SQL 代码示例: ```sql -- 获取身份证号码的前 17 位数字 SELECT SUBSTR(id_card, 1, 17) AS id_card_17 FROM users; -- 获取身份证号码的最后一位校验位 SELECT SUBSTR(id_card, 18, 1) AS id_card_check FROM users; -- 计算身份证号码的校验位 SELECT CASE WHEN MOD(SUBSTR(id_card, 1, 1) * 7 + SUBSTR(id_card, 2, 1) * 9 + SUBSTR(id_card, 3, 1) * 10 + SUBSTR(id_card, 4, 1) * 5 + SUBSTR(id_card, 5, 1) * 8 + SUBSTR(id_card, 6, 1) * 4 + SUBSTR(id_card, 7, 1) * 2 + SUBSTR(id_card, 8, 1) * 1 + SUBSTR(id_card, 9, 1) * 6 + SUBSTR(id_card, 10, 1) * 3 + SUBSTR(id_card, 11, 1) * 7 + SUBSTR(id_card, 12, 1) * 9 + SUBSTR(id_card, 13, 1) * 10 + SUBSTR(id_card, 14, 1) * 5 + SUBSTR(id_card, 15, 1) * 8 + SUBSTR(id_card, 16, 1) * 4 + SUBSTR(id_card, 17, 1) * 2, 11) = 0 THEN '0' WHEN MOD(SUBSTR(id_card, 1, 1) * 7 + SUBSTR(id_card, 2, 1) * 9 + SUBSTR(id_card, 3, 1) * 10 + SUBSTR(id_card, 4, 1) * 5 + SUBSTR(id_card, 5, 1) * 8 + SUBSTR(id_card, 6, 1) * 4 + SUBSTR(id_card, 7, 1) * 2 + SUBSTR(id_card, 8, 1) * 1 + SUBSTR(id_card, 9, 1) * 6 + SUBSTR(id_card, 10, 1) * 3 + SUBSTR(id_card, 11, 1) * 7 + SUBSTR(id_card, 12, 1) * 9 + SUBSTR(id_card, 13, 1) * 10 + SUBSTR(id_card, 14, 1) * 5 + SUBSTR(id_card, 15, 1) * 8 + SUBSTR(id_card, 16, 1) * 4 + SUBSTR(id_card, 17, 1) * 2, 11) = 1 THEN 'X' ELSE CAST(11 - MOD(SUBSTR(id_card, 1, 1) * 7 + SUBSTR(id_card, 2, 1) * 9 + SUBSTR(id_card, 3, 1) * 10 + SUBSTR(id_card, 4, 1) * 5 + SUBSTR(id_card, 5, 1) * 8 + SUBSTR(id_card, 6, 1) * 4 + SUBSTR(id_card, 7, 1) * 2 + SUBSTR(id_card, 8, 1) * 1 + SUBSTR(id_card, 9, 1) * 6 + SUBSTR(id_card, 10, 1) * 3 + SUBSTR(id_card, 11, 1) * 7 + SUBSTR(id_card, 12, 1) * 9 + SUBSTR(id_card, 13, 1) * 10 + SUBSTR(id_card, 14, 1) * 5 + SUBSTR(id_card, 15, 1) * 8 + SUBSTR(id_card, 16, 1) * 4 + SUBSTR(id_card, 17, 1) * 2, 11) AS CHAR) END AS id_card_check FROM users; -- 校验身份证号码的合法性 SELECT CASE WHEN REGEXP_LIKE(id_card, '^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])([0-2][1-9]|[1-3]\d|4[0-6]|5[0-3])\d{3}([0-9]|X)$') AND SUBSTR(id_card, 18, 1) = ( SELECT CASE WHEN MOD(SUBSTR(id_card, 1, 1) * 7 + SUBSTR(id_card, 2, 1) * 9 + SUBSTR(id_card, 3, 1) * 10 + SUBSTR(id_card, 4, 1) * 5 + SUBSTR(id_card, 5, 1) * 8 + SUBSTR(id_card, 6, 1) * 4 + SUBSTR(id_card, 7, 1) * 2 + SUBSTR(id_card, 8, 1) * 1 + SUBSTR(id_card, 9, 1) * 6 + SUBSTR(id_card, 10, 1) * 3 + SUBSTR(id_card, 11, 1) * 7 + SUBSTR(id_card, 12, 1) * 9 + SUBSTR(id_card, 13, 1) * 10 + SUBSTR(id_card, 14, 1) * 5 + SUBSTR(id_card, 15, 1) * 8 + SUBSTR(id_card, 16, 1) * 4 + SUBSTR(id_card, 17, 1) * 2, 11) = 0 THEN '0' WHEN MOD(SUBSTR(id_card, 1, 1) * 7 + SUBSTR(id_card, 2, 1) * 9 + SUBSTR(id_card, 3, 1) * 10 + SUBSTR(id_card, 4, 1) * 5 + SUBSTR(id_card, 5, 1) * 8 + SUBSTR(id_card, 6, 1) * 4 + SUBSTR(id_card, 7, 1) * 2 + SUBSTR(id_card, 8, 1) * 1 + SUBSTR(id_card, 9, 1) * 6 + SUBSTR(id_card, 10, 1) * 3 + SUBSTR(id_card, 11, 1) * 7 + SUBSTR(id_card, 12, 1) * 9 + SUBSTR(id_card, 13, 1) * 10 + SUBSTR(id_card, 14, 1) * 5 + SUBSTR(id_card, 15, 1) * 8 + SUBSTR(id_card, 16, 1) * 4 + SUBSTR(id_card, 17, 1) * 2, 11) = 1 THEN 'X' ELSE CAST(11 - MOD(SUBSTR(id_card, 1, 1) * 7 + SUBSTR(id_card, 2, 1) * 9 + SUBSTR(id_card, 3, 1) * 10 + SUBSTR(id_card, 4, 1) * 5 + SUBSTR(id_card, 5, 1) * 8 + SUBSTR(id_card, 6, 1) * 4 + SUBSTR(id_card, 7, 1) * 2 + SUBSTR(id_card, 8, 1) * 1 + SUBSTR(id_card, 9, 1) * 6 + SUBSTR(id_card, 10, 1) * 3 + SUBSTR(id_card, 11, 1) * 7 + SUBSTR(id_card, 12, 1) * 9 + SUBSTR(id_card, 13, 1) * 10 + SUBSTR(id_card, 14, 1) * 5 + SUBSTR(id_card, 15, 1) * 8 + SUBSTR(id_card, 16, 1) * 4 + SUBSTR(id_card, 17, 1) * 2, 11) AS CHAR) END ) THEN '合法' ELSE '不合法' END AS id_card_validity FROM users; ``` 其中,`id_card` 是要验证的身份证号码字段。这个 SQL 代码示例可以获取身份证号码的前 17 位数字、最后一位校验位,计算身份证号码的校验位,并检查身份证号码是否符合国家规定的格式和校验位是否正确,最终返回身份证件号码的合法性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值