正則表達式身份證校驗vue+element

 

 elementUI失去焦點校驗身份證

 <el-form-item label="證件號碼:">
                  <el-input
                    v-model="form.cardNum"
                   @blur="cardBlur()"
                    placeholder="請輸入證件號碼"
                    maxlength="18"
                  ></el-input>
                </el-form-item>

 

//身份證失去焦點校驗

    cardBlur() {

      var vm = this;

      if (vm.form.cardNum !== "") {

        var validateStr = vm.isIdCard(vm.form.cardNum);

        if (validateStr == false) {

          //alert("請輸入正確的身份證號碼!");

          vm.open3();

        } else {

          //身份證正確

        }

      }

    },

    //身份證錯誤提示

    open3() {

      this.$message({

        showClose: true,

        message: "請輸入正確的身份證號碼!",

        type: "error"

      });

    },

    //判斷是不是合法身份證號

    isIdCard: function(data) {

      var str = data;

      if (str == "") return false;

      var len = str.length;

      var reg = "";

      if (len == 15) {

        reg = /^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/;

      } else if (len == 18) {

        reg = /^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d|X|x)$/;

      } else {

        return false;

      }



      if (!reg.test(str)) return false;



      var part = str.match(reg);

      var year = len == 15 ? "19" + part[3] : part[3];

      var date = new Date(year + "/" + part[4] + "/" + part[5]);

      if (

        date.getFullYear() != year ||

        date.getMonth() + 1 != (part[4] | 0) ||

        date.getDate() != (part[5] | 0)

      )

        return false;



      if (len == 15) return true;

      var wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];

      var lastcode = "10X98765432";

      var sum = 0;

      for (var i = 0; i < 17; i++) {

        sum += parseInt(str.charAt(i)) * wi[i];

      }

      return lastcode.charAt(sum % 11) == part[7].toUpperCase();

    },

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章