校验身份证

本文介绍了一个用于验证中国身份证号码正确性的JavaScript函数。该函数首先检查身份证号的基本格式,然后通过加权求和的方式计算校验码并与身份证最后一位进行比对,确保身份证号码的有效性。
 function checkidNum(id){
   
    var reg = /^[1-6][0-7][\d]{4}((19[\d]{2})|(20[0-1][\d]))((0[1-9])|(1[0-2]))((0[1-9])|([1-2]\d)|(3[0-1]))[\d]{3}[\dx]$/;
    var isFormatMatch = reg.test(id);
    if (!isFormatMatch) {
        alert("身份证号格式错误");
        return false;
    };
    var ids = id.split("");
    var modulus = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
    var matchLast = [1,0,"X",9,8,7,6,5,4,3,2]
    var sum = 0;
    for (var i = 0; i < modulus.length; i++) {
        sum += (modulus[i] * ids[i]);
    };

    var checksum = matchLast[sum % 11];
    if (checksum != ids[ids.length-1].toUpperCase()) {
        alert("error: 校验位错误");
        return false;
    }
    return true;

}
给定的引用中未提及Jeecg中校验身份证号的方法。不过可以参考Vue中常用的几种身份证校验思路以在Jeecg中实现校验。 在Vue项目里,身份证校验通常是借助正则表达式或者自定义校验函数来达成的。 ### 方法一:使用正则表达式校验 示例代码如下: ```vue <template> <div> <el-form :model="form" :rules="formRules" ref="formRef" label-width="100px"> <el-form-item label="身份证号" prop="idcard"> <el-input v-model="form.idcard" placeholder="请输入身份证号"></el-input> </el-form-item> </el-form> </div> </template> <script> export default { data() { return { form: { idcard: '' }, formRules: { idcard: [ { required: true, message: '请填写证件号码', trigger: 'blur' }, { pattern: /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/, message: '证件号码格式有误!', trigger: 'blur' } ] } }; } }; </script> ``` 此方法通过正则表达式对身份证号的格式进行校验,在Jeecg中可以把这段逻辑运用到表单验证里。 ### 方法二:使用自定义函数校验 示例代码如下: ```vue <template> <div> <el-form :model="ruleForm" :rules="dataRule" ref="ruleForm" label-width="100px"> <el-form-item label="身份证号" prop="receiverCardNo"> <el-input v-model="ruleForm.receiverCardNo" placeholder="请输入身份证号"></el-input> </el-form-item> </el-form> </div> </template> <script> // 假设这里有一个 isIdCard 函数用于校验身份证号 function isIdCard(value) { return /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/.test(value); } export default { computed: { dataRule() { const isIdCard2 = (rule, value, callback) => { if (value) { if (!isIdCard(value)) { callback(new Error('身份证号格式有误,请重新填写')); } } callback(); }; return { receiverCardNo: [ { required: true, message: '请填写身份证号', trigger: 'blur' }, { validator: isIdCard2, trigger: 'blur' } ] }; } }, data() { return { ruleForm: { receiverCardNo: '' } }; } }; </script> ``` 这种方法自定义了校验函数`isIdCard2`,在Jeecg里同样能把此逻辑应用到表单验证中。 ### 在Jeecg中实现校验的思路 1. **前端校验**:把上述校验逻辑添加到Jeecg的表单组件里,借助表单验证规则来校验身份证号。 2. **后端校验**:在Jeecg的后端接口里,对前端传递过来的身份证号进行二次校验,以确保数据的准确性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值