资讯专栏INFORMATION COLUMN

React 实现 身份证15位转18位

TwIStOy / 2787人阅读

摘要:代码请输入位你的身份证号码你输入的身份证格式不正确,月份填写错误你输入的身份证的个格式不正确,日期格填写错误位号码位号码转换

代码:

    import React,{Component} from "react";
    import "./list.less";
    export default class IDcard extends  Component {
      constructor(props) {
       super(props);
       this.state = {
       newID:"",
       oldID:"",
      }
    }
      onChange(key,e,value) {
        this.setState({oldID:e.target.value});
      }
      
      onClick(){
        let v = new Array();
        let vs = "10X98765432";
        v.push(2,4,8,5,10,9,7,3,6,1,2,4,8,5,10,9,7)
        let oldID=this.state.oldID
        if(oldID.length !==15){
          alert("请输入15位你的身份证号码!");
          return;
        }
        let month = oldID.substring(8,10);
        if (!this.checkMonth(month)){
          alert("你输入的身份证格式不正确,月份填写错误!")
          return;
        }
    
        let year = "19" + oldID.substring(6,8);
        let day = oldID.substring(10,12);
        if(!this.checkDay(year,month,day)){
          alert("你输入的身份证的个格式不正确,日期格填写错误");
          return;
        }
    
        let cardID17 = oldID.substring(0,6)+"19"+oldID.substring(6);
        let N = 0,R = -1,T = "0",j = 0,cardID18="";
        
        for (var i = 16;i >=0;i--){
          N += parseInt(cardID17.substring(i,i+1))*v[j];
          j++;
        }
        R = N % 11;
        T = vs.charAt(R)
        cardID18 = cardID17 + T;
        this.setState({newID:cardID18})
    
      }
    
      checkMonth(month){
        if (month<1 || month >12){
          return false;
        }
        return true;
      }
      
      checkDay(year,month,day){
        let Mday = 0;
        if(day<1 || day>31){
          return false;
        }
        if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)  Mday =31;
        if(month==4||month==6||month==9||month==11) Mday = 30;
        if(month===2) Mday = this.isLeapYear(year);
        if(day>Mday) return false;
        return true
      }
    
      isLeapYear(year){
        return (year % 4 === 0 && year % 100 !==0) || (year % 400 === 0)
      }
    
      render(){
        return(
          
15位号码:

18位号码:

) } } `

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83678.html

相关文章

  • 1518份证号码正则表达式

    摘要:例也可通过验证,而月并不存在日校验码是由位本体码计算得出,方案并未校验此码这个链接中的位正则表达式错的,最后顺序码应该是位。 身份证正则表达式 在项目中遇到身份证号码验证,百度了一些资料,太简单的和太复杂的pass,综合了一些案例,取长补短,形成了个折中版本的,正则表达式如下: var reg =/(^[1-9]d{5}(18|19|([23]d))d{2}((0[1-9])|(10|...

    galois 评论0 收藏0
  • 前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)

    摘要:并总结经典面试题集各种算法和插件前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快速搭建项目。 本文是关注微信小程序的开发和面试问题,由基础到困难循序渐进,适合面试和开发小程序。并总结vue React html css js 经典面试题 集各种算法和插件、前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快...

    li21 评论0 收藏0
  • 前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)

    摘要:并总结经典面试题集各种算法和插件前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快速搭建项目。 本文是关注微信小程序的开发和面试问题,由基础到困难循序渐进,适合面试和开发小程序。并总结vue React html css js 经典面试题 集各种算法和插件、前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快...

    AaronYuan 评论0 收藏0
  • 正则表达式

    摘要:下面分别分析出生日期和校验位检查生日日期是否正确输入的身份证号里出生日期不对将位身份证转成位校验位按照的规定生成,可以认为是数字。 一、创建方式 字面量创建方式var reg = /abc/;对象RegExp,适合正则表达式模式不确定的时候var reg = new RegExp(abc); 二、表达式模式(部分) 常用: 1. w匹配一个单字字符(字母,数字,下划线) W2. d匹配...

    iKcamp 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<