`
dreamoftch
  • 浏览: 486305 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

简单身份证号校验

阅读更多

 

 

kotlin代码:

 

    private fun validateIdCard(cardNo: String?): Boolean {
        cardNo ?: return false
        if (cardNo.length != 18 || !cardNo.substring(0, 17).matches(Regex("\\d{17}"))) {
            return false
        }
        // 身份证号前17位分别和下面的array中对应的值相乘之后求和
        // 然后模11之后的结果作为数组下标,去validCodes中取正确的尾号和参数中的尾号做校验接即可
        val intArr = arrayOf(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)
        var sum = 0
        for (idx in intArr.indices) {
            sum += Character.digit(cardNo[idx], 10) * intArr[idx]
        }
        val mod = sum % 11
        val validCodes = arrayOf("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2")
        return validCodes[mod] == cardNo.substring(cardNo.length - 1)
    }

 

只根据前17位算出正确的尾号来校验

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics