Vue项目中身份证号的验证及根据身份证号来自动识别年龄、性别、出生日期

本文描述了作者在毕业设计中使用ElementUI的el-form组件实现用户输入身份证号码后自动填充出生日期、性别和计算年龄的过程,同时包含数据验证规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#毕业设计

完成毕业过程中的随手小记,对自己的要求只为实现此功能,路子野,不足之处还请各位大佬斧正

一、form表单中代码如下

<el-form :inline="true" :model="form" label-width="100px" ref="form" :rules="formRules">  
  <el-form-item label="证件号码" prop="idcard">
    <el-input v-model="form.idcard"  
        placeholder="请输入身份证号"
        @input="getByIdcard(form.idcard)" />
  </el-form-item>
  <el-form-item label="年龄" prop="age" >
    <el-input v-model="form.age" placeholder="请输入年龄" disabled></el-input>
  </el-form-item><br>
  <el-form-item label="性别" prop="sex" >
    <el-input v-model="form.sex" placeholder="请输入性别" disabled></el-input>
  </el-form-item><br>
  <el-form-item label="出生日期" prop="birth" >
    <el-input v-model="form.birth" placeholder="请输入出生日期" disabled></el-input>
  </el-form-item>
</el-form>

二、在data方法中的代码如下

data() {
   return {
        form:{
           name:''
        },

        value: '',

        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'
          }
        ],
      }
   }
}

三、在methods中的代码如下

methods:{
getByIdcard(IdNO) {
      let birthday = "";
      let time = '';
      let sex = '';
      let age = '';
      let myDate = new Date()
         //根据身份证号码获取出生年月
      if (IdNO.length == 18) {
        birthday = IdNO.substr(6, 8);
        time = birthday.replace(/(.{4})(.{2})/, "$1-$2-");
        this.form.birth = time
      }
      //根据身份证号码获取性别
      if (IdNO.length == 18) {
        sex = IdNO.substr(16,1);
        if(sex% 2 == 1){
        this.form.sex = '男'
         } else {
        this.form.sex = '女'
        }
        }
      //根据身份证号码获取年龄
       if(IdNO.length == 18){
        age = myDate.getFullYear() - IdNO.substring(6, 10) - 1;
        this.form.age = age;
       }
    },
}

### 在 Vue 中集成身份证 OCR 识别功能 要在 Vue 应用程序中实现身份证 OCR 功能,可以采用以下方法: #### 方法一:基于第三方 SDK 的解决方案 可以通过引入百度 OCR SDK 来完成身份证识别功能。以下是具体实现方式。 1. **获取 Access Token** 需要先从百度云平台申请 API 密钥并生成 Access Token[^3]。Access Token 是访问百度 OCR 接口的必要凭证。 2. **安装依赖库** 安装 `axios` 或其他 HTTP 请求工具用于发送网络请求。 ```bash npm install axios ``` 3. **编写前端逻辑** 下面是一个简单的 Vue 组件示例,展示如何上传图片并通过百度 OCR 进行身份证识别。 ```vue <template> <div> <h3>身份证 OCR 扫描</h3> <input type="file" @change="handleFileChange" accept="image/*" /> <button @click="uploadAndRecognize">识别身份证</button> <p v-if="result">{{ result }}</p> </div> </template> <script> import axios from 'axios'; export default { data() { return { file: null, result: '' }; }, methods: { handleFileChange(event) { this.file = event.target.files[0]; }, async uploadAndRecognize() { const accessToken = await this.getAccessToken(); if (!this.file || !accessToken) { alert('请选择文件或检查 Access Token'); return; } const formData = new FormData(); formData.append('image', this.base64EncodeImage(this.file)); try { const response = await axios.post( `https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=${accessToken}`, formData, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } ); this.result = JSON.stringify(response.data.words_result); } catch (error) { console.error(error); alert('识别失败,请重试'); } }, base64EncodeImage(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onloadend = () => resolve(btoa(reader.result.split(',')[1])); reader.onerror = reject; reader.readAsDataURL(file); }); }, getAccessToken() { const apiKey = 'your_api_key'; // 替换为实际的 API Key const secretKey = 'your_secret_key'; // 替换为实际的 Secret Key return axios.get(`https://aip.baidu.com/oauth/2.0/token`, { params: { grant_type: 'client_credentials', client_id: apiKey, client_secret: secretKey } }).then(res => res.data.access_token).catch(err => { console.error(err); return ''; }); } } }; </script> ``` 上述代码实现了文件选择、Base64 编码转换以及向百度 OCR 发起 POST 请求的过程[^2]。 --- #### 方法二:自定义服务端接口 如果不想直接暴露百度 OCR 的密钥给前端,可以选择在服务器端封装一层 RESTful API。这样可以隐藏敏感信息,并增强系统的安全性。 1. **后端开发** 后端接收来自前端的 Base64 图片数据,再转发至百度 OCR 并返回结果。 2. **前端调整** 修改上述代码中的 `uploadAndRecognize` 方法,使其指向自己的后端接口而非百度官方地址。 --- #### 注意事项 - 确保每次调用前验证 Access Token 是否有效,过期则重新获取。 - 对于生产环境应用,建议将百度 OCR 的密钥存储在安全的地方(如环境变量),避免泄露风险。 - 如果需要支持更多类型的证件或其他场景的文字识别,可扩展到通用文字识别模块。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值