VUE 身份证号验证
生活随笔
收集整理的這篇文章主要介紹了
VUE 身份证号验证
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
export function validateSfz(rule, value, callback) {if (!value) {return callback(new Error('身份證號碼不能為空'));}function validataCredentials(num) {var msg, boo; // msg身份證驗證友情提示,boo返回值var num = num.toUpperCase(); // 身份證為末尾可能是X// 身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,// 最后一位是校驗位,可能為數字或字符X。const arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);const arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var nTemp = 0,i;if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {// 輸入的身份證號長度不對,或者號碼不符合規定;return [boo = false, msg = "輸入的身份證號長度不對,或者號碼不符合規定"];}// 校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。// 下面分別分析出生日期和校驗位var len, re;len = num.length;if (len == 15) {re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);var arrSplit = num.match(re);// 檢查生日日期是否正確var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);var bGoodDay;bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));if (!bGoodDay) {// 輸入的身份證號里出生日期不對!return [boo = false, msg = "輸入的身份證號里出生日期不對!"];} else {// 將15位身份證轉成18位// 校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。 num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);for (i = 0; i < 17; i++) {nTemp += num.substr(i, 1) * arrInt[i];}num += arrCh[nTemp % 11];return [boo = true, msg = num];}}if (len == 18) {re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);var arrSplit = num.match(re);// 檢查生日日期是否正確var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);var bGoodDay;bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));if (!bGoodDay) {// 輸入的身份證號里出生日期不對! return [boo = false, msg = " 輸入的身份證號里出生日期不對"];} else {// 檢驗18位身份證的校驗碼是否正確。// 校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。var valnum;for (i = 0; i < 17; i++) {nTemp += num.substr(i, 1) * arrInt[i];}valnum = arrCh[nTemp % 11];if (valnum != num.substr(17, 1)) {// 18位身份證的校驗碼不正確!return [boo = false, msg = "身份證的校驗碼不正確!"];}return [boo = true, msg = "驗證成功"]}}return [boo = false, msg = "身份證的長度不正確!"];}setTimeout(() => {var res = validataCredentials(value);if (!res[0]) {callback(new Error(res[1]));} else {callback();}}, 200);
};
VUE HTML 部分
<el-form:model="ruleForm":rules="rules"ref="ruleForm"label-width="100px"class="demo-ruleForm"><el-form-itemlabel="申請人身份證號"prop="identity"label-width="27%"><el-inputv-model="ruleForm.identity"placeholder="請輸入您的身份證號碼(如:6105******1452)":maxlength="18"></el-input></el-form-item> </el-form>使用方式: 自己創建一個js文件 如:validateSfz.js
JS 部分
復制代碼可以直接使用 參考 element ui 表單驗證 自定義驗證。
總結
以上是生活随笔為你收集整理的VUE 身份证号验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: yaml 解决问题
- 下一篇: 一文看懂哈夫曼树与哈夫曼编码