vue+element 身份证号码以及有效性校验 适用 15位 或18位
生活随笔
收集整理的這篇文章主要介紹了
vue+element 身份证号码以及有效性校验 适用 15位 或18位
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
data () {let idCardValidity = (rule, code, callback) => {var city = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "內蒙古", 21: "遼寧", 22: "吉林", 23: "黑龍江 ", 31: "上海", 32: "江蘇", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山東", 41: "河南", 42: "湖北 ", 43: "湖南", 44: "廣東", 45: "廣西", 46: "海南", 50: "重慶", 51: "四川", 52: "貴州", 53: "云南", 54: "西藏 ", 61: "陜西", 62: "甘肅", 63: "青海", 64: "寧夏", 65: "新疆", 71: "臺灣", 81: "香港", 82: "澳門", 91: "國外 " };var tip = ""var pass = trueif (!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)) {tip = "身份證號格式錯誤"pass = false;} else if (!city[code.substr(0, 2)]) {tip = "地址編碼錯誤"pass = false} else {// 18位身份證需要驗證最后一位校驗位if (code.length === 18) {code = code.split('')// ∑(ai×Wi)(mod 11)// 加權因子var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]// 校驗位var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]var sum = 0var ai = 0var wi = 0for (var i = 0; i < 17; i++) {ai = code[i]wi = factor[i]sum += ai * wi}var last = parity[sum % 11];if (parity[sum % 11] != code[17]) {tip = "校驗位錯誤"pass = false}}}if (!pass) {callback(new Error(tip))} else {callback()}// if (!pass) alert(tip)// return pass}return {personInfo: {idCard: "",},rules: {idCard: [{ required: true, message: '請輸入證件號', trigger: 'blur' },{pattern: /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/,message: '請輸入正確的證件號'},{ validator: idCardValidity, trigger: 'blur' }],}}},
1.規則方法寫在 data里 return之前。
2. 身份證有效性校驗規則來源與百度
校驗公示:∑(ai×Wi)(mod 11)
https://baike.baidu.com/item/%E6%9C%89%E6%95%88%E8%BA%AB%E4%BB%BD%E8%AF%81%E4%BB%B6/5039723?fr=aladdin。
?
總結
以上是生活随笔為你收集整理的vue+element 身份证号码以及有效性校验 适用 15位 或18位的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞凌嵌入式RK3399-C开发板常见问题
- 下一篇: BSON?