美文网首页
vue 校验身份证号

vue 校验身份证号

作者: 别摸_兜里有糖 | 来源:发表于2019-06-11 14:34 被阅读0次

一:引入创建的IdCard.js,后面会附上代码


二:在main.js中添加

import IdCard from '../static/js/IdCard'

Vue.prototype.validid = IdCard


三:组件中使用

这是我组件中的代码

四:最后就是IdCard.js中的代码了,直接复制就可以

// Generated by CoffeeScript 1.12.7

/*

Validid is open source in:

https://github.com/Edditoria/validid

under MIT license:

https://github.com/Edditoria/validid/blob/master/LICENSE.md

*/

(function () {

var Validid,validid

  Validid = (function () {

function Validid () {}

Validid.prototype.tools = {

normalize: function (id) {

var re

        re = /\[-\/\s]/g

        id= id.toUpperCase().replace(re,'')

re = /\([A-Z0-9]\)$/

        if (re.test(id)) {

id= id.replace(/\[\(\)]/g,'')

}

return id

},

isDateValid: function (idDate, minDate, maxDate) {

var isFormatValid,parseDate

        if (minDate== null) {

minDate= 'default'

        }

if (maxDate== null) {

maxDate= 'today'

        }

if (minDate=== 'default' || minDate=== '') {

minDate= '18991129'

        }

isFormatValid = function (date) {

return typeof date=== 'string' && /^[0-9]{8}$/.test(date)

}

if (!isFormatValid(idDate)) {

return false

        }

if (!isFormatValid(minDate)) {

return false

        }

parseDate = function (input) {

var date,day,isDayValid,isFutureDate,isLeapYear,isMonthValid,maxDay,month,startIndex,year

          startIndex = 0

          year = +input.substring(startIndex,startIndex += 4)

month = input.substring(startIndex,startIndex += 2)

day = +input.substring(startIndex,startIndex += 2)

date = new Date(year,+month - 1,day)

maxDay = '01,03,05,07,08,10,12'.indexOf(month)>= 0 ? 31 : '04,06,09,11'.indexOf(month)>= 0 ? 30 : (isLeapYear = (year % 4 === 0 && year % 100 !== 0)|| (year % 400 === 0),isLeapYear ? 29 : 28)

isDayValid = day > 0 && day <= maxDay

          if (!isDayValid) {

return false

          }

isMonthValid = +month > 0 && +month <= 12

          if (!isMonthValid) {

return false

          }

isFutureDate = new Date()< date

          if (isFutureDate) {

return false

          }

return date

        }

idDate= parseDate(idDate)

if (idDate=== false) {

return false

        }

minDate= parseDate(minDate)

if (minDate=== false) {

return false

        }

maxDate= maxDate=== 'today' ? new Date(): typeof maxDate=== 'string' ? parseDate(maxDate): maxDate

if (maxDate=== false) {

return false

        }

return (idDate>= minDate)&& (idDate<= maxDate)

},

getMaxDate: function (yearsOld) {

var now,year

        now = new Date()

year = now.getFullYear()- yearsOld

return new Date(year,now.getMonth(),now.getDate())

}

}

Validid.prototype.cnid = function (id) {

var isChecksumValid,isDateValid,isFormatValid,isLengthValid

      isLengthValid = function (id) {

return id.length === 18

      }

isFormatValid = function (id) {

return /^[0-9]{17}[0-9X]$/.test(id)

}

isDateValid = (function (_this) {

return function () {

return _this.tools.isDateValid(id.substring(6,14),'18860625')

}

})(this)

isChecksumValid = function (id) {

var char,checkDigit,getWeight,i,identifier,index,len,remainder,weightedSum

        identifier = id.slice(0,-1)

checkDigit = id.slice(-1)=== 'X' ? 10 : +id.slice(-1)

getWeight = function (n) {

return Math.pow(2, n- 1)% 11

        }

weightedSum = 0

        index = id.length

        for (i = 0,len = identifier.length;i < len;i++) {

char = identifier[i]

weightedSum += +char * getWeight(index)

index--

        }

remainder = (12 - weightedSum % 11)% 11 - checkDigit

        return remainder === 0

      }

id= this.tools.normalize(id)

return isLengthValid(id)&& isFormatValid(id)&& isDateValid()&& isChecksumValid(id)

}

Validid.prototype.twid = function (id) {

var isChecksumValid,isFormatValid,isLengthValid

      isLengthValid = function (id) {

return id.length === 10

      }

isFormatValid = function (id) {

return /^[A-Z][12][0-9]{8}$/.test(id)

}

isChecksumValid = function (id) {

var char,i,idLen,idTail,len,letterIndex,letterValue,letters,remainder,weight,weightedSum

        idLen = id.length

        letters = 'ABCDEFGHJKLMNPQRSTUVXYWZIO'

        letterIndex = letters.indexOf(id[0])+ 10

        letterValue = Math.floor(letterIndex / 10)+ (letterIndex % 10)* (idLen - 1)

idTail = id.slice(1)

weight = idLen - 2

        weightedSum = 0

        for (i = 0,len = idTail.length;i < len;i++) {

char = idTail[i]

weightedSum += +char * weight

          weight--

        }

remainder = (letterValue + weightedSum + +id.slice(-1))% 10

        return remainder === 0

      }

id= this.tools.normalize(id)

return isLengthValid(id)&& isFormatValid(id)&& isChecksumValid(id)

}

Validid.prototype.hkid = function (id) {

var getLetterValue,isChecksumValid,isFormatValid,isLengthValid,isLetter

      getLetterValue = function (letter) {

return letter.charCodeAt(0)- 64

      }

isLetter = function (char) {

return /[a-zA-Z]/.test(char)

}

isLengthValid = function (id) {

return id.length === 8 || id.length === 9

      }

isFormatValid = function (id) {

return /^[A-MP-Z]{1,2}[0-9]{6}[0-9A]$/.test(id)

}

isChecksumValid = function (id) {

var char,charValue,checkDigit,i,identifier,len,remainder,weight,weightedSum

        weight = id.length

        weightedSum = 0

        identifier = id.slice(0,-1)

checkDigit = id.slice(-1)=== 'A' ? 10 : +id.slice(-1)

for (i = 0,len = identifier.length;i < len;i++) {

char = identifier[i]

charValue = isLetter(char)? getLetterValue(char): +char

          weightedSum += charValue * weight

          weight--

        }

remainder = (weightedSum + checkDigit)% 11

        return remainder === 0

      }

id= this.tools.normalize(id)

return isLengthValid(id)&& isFormatValid(id)&& isChecksumValid(id)

}

Validid.prototype.krid = function (id) {

var isChecksumValid,isDateValid,isFormatValid,isLengthValid

      isLengthValid = function (id) {

return id.length === 13

      }

isFormatValid = function (id) {

return /^[0-9]{13}$/.test(id)

}

isDateValid = (function (_this) {

return function (id) {

var date,maxDate,sDigit,yearPrefix

          sDigit = id.substring(6,7)

yearPrefix = (function () {

switch (sDigit) {

case '1':

              case '2':

              case '5':

              case '6':

                return '19'

              case '3':

              case '4':

              case '7':

              case '8':

                return '20'

              default:

                return '18'

            }

})()

date = yearPrefix + id.substring(0,6)

maxDate = _this.tools.getMaxDate(17)

return _this.tools.isDateValid(date,'default',maxDate)

}

})(this)

isChecksumValid = function (id) {

var char,i,index,len,remainder,weight,weightedSum

        weight = [2,3,4,5,6,7,8,9,2,3,4,5,0]

weightedSum = 0

        index = 0

        for (i = 0,len = id.length;i < len;i++) {

char = id[i]

weightedSum += +char * weight[index]

index++

        }

remainder = (11 - weightedSum % 11)% 10 - +id.slice(-1)

return remainder === 0

      }

id= this.tools.normalize(id)

return isLengthValid(id)&& isFormatValid(id)&& isDateValid(id)&& isChecksumValid(id)

}

return Validid

  })()

validid = new Validid()

if ((typeof module !== 'undefined' && module !== null)&& module.exports) {

module.exports = validid

  }

if (typeof window !== 'undefined' && window !== null) {

window.validid = validid

  }

}).call(this)


相关文章

网友评论

      本文标题:vue 校验身份证号

      本文链接:https://www.haomeiwen.com/subject/jdhqfctx.html