Vue中根据输入的身份证号识别年龄、性别

需求: 根据用户输入的身份证号识别出年龄和性别,回显到相应的输入框中

分析:定义身份证号的正则表达式,利用字符串的方法截取出相关字符进行判断

示例:

<template>
<div class="box">
<!-- 根据身份证号生成性别,年龄 -->
    <div class="form_txt">根据身份证号生成性别、年龄</div>
    <el-form :model="form" label-width="80px">
      <el-row>
        <el-col :span="8">
          <el-form-item label="身份证号">
            <el-input
              v-model="form.identityCardNo"
              autocomplete="off"
              placeholder="请输入身份证号"
              maxlength="18"
              @input="inputChange"
            ></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="性别">
            <el-input v-model="form.sex"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="年龄">
            <el-input v-model="form.age"></el-input>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
  </div>
</div>
</template>
<script>
export default {
    data() {
    return {
      form: {
        identityCardNo: "",
        sex: "",
        age: "",
      },
    };
  },
methods: {

    inputChange() {
      const reg =
        /^[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]$/;
      if (reg.test(this.form.identityCardNo)) {
        var org_birthday = this.form.identityCardNo.substring(6, 14);
        var org_gender = this.form.identityCardNo.substring(16, 17);
        var sex = org_gender % 2 == 1 ? "男" : "女";
        var birthday =
          org_birthday.substring(0, 4) +
          "-" +
          org_birthday.substring(4, 6) +
          "-" +
          org_birthday.substring(6, 8);
        var birthdays = new Date(birthday.replace(/-/g, "/"));
        let d = new Date();
        let age =
          d.getFullYear() -
          birthdays.getFullYear() -
          (d.getMonth() < birthdays.getMonth() ||
          (d.getMonth() == birthdays.getMonth() &&
            d.getDate() < birthdays.getDate())
            ? 1
            : 0);
        this.form.sex = sex;
        this.form.birthday = birthdays;
        this.form.age = age;
      } else {
        this.form.sex = "未填写";
        return false;
      }
    },
  },
}
</script>

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值