IMEI,手机号,身份证号格式有效性校验

  • IMEI格式有效性校验
  • 手机号格式有效性校验
  • 身份证格式有效性校验

IMEI格式有效性校验

imei一般由15位数字组成,有些厂家会在最后加上两位数字表示版本号。imei的校验主要通过模10算法,基于前14位的数字校验第15位的数值。

class IsValidIMEI: AbstractScalar(), (String) -> Boolean {//一般的imei基本都是15位,有些17位的,后两位是版本号private val regex : Regex = Regex("\\d{15}|\\d{17}")override operator fun invoke(imei: String): Boolean {if (imei.isEmpty()){return false}return regex.matches(imei) && luhnAlgorithm(imei)}private fun luhnAlgorithm(imei: String): Boolean{var sum1 = 0var sum2 = 0var index = 0while (index < 14){val num = imei[index].toString().toInt()if (index % 2 == 0){sum1 += num} else {val temp = num * 2sum2 += temp / 10 + temp % 10}index ++}var last = (sum1 + sum2) % 10if (last != 0){last = 10 - last}return last == imei[14].toString().toInt()}
}

手机号格式有效性校验

手机号如果不算前缀的国家码,一般由11位数字组成。主要校验的就是前三位运营商号码,这个号码资源可以去工信部网站查,时不时会更新

    private val regex : Regex = Regex("^((1[3,8][0-9])|(14[5,7,9])|(15[0-3,5-9])|(17[0,3,5-8])|166|192|198|199)\\d{8}$")

身份证格式有效性校验

身份证的格式,网上也有很多了,国内大陆地区都是18位,对最后一位采用模11-2算法校验。

class IsValidIdentityCard: AbstractScalar(), (String) -> Boolean {private val regex18 : Regex = Regex("^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$")private val regex15 : Regex = Regex("^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$")private val idCardWi = listOf(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)private val idCardY = listOf("1","0","X","9","8","7","6","5","4","3","2")override operator fun invoke(id: String): Boolean {if (id.isEmpty()){return false}return when {id.length == 18 -> regex18.matches(id) && lastNumberIsValid(id)id.length == 15 -> regex15.matches(id)else -> false}}private fun lastNumberIsValid(id: String): Boolean{val charArray = id.toCharArray()var sum = 0var index = 0while (index < idCardWi.size){val current = charArray[index].toString().toInt()sum += current * idCardWi[index]index += 1}val lastID = charArray[17].toString()val mode = sum % 11return if (idCardY[mode].equals(lastID, true)){true} else {logger.warn("ID $id is invalid, because last number should be ${idCardY[mode]}.")false}}
}

IMEI,手机号,身份证号格式有效性校验相关推荐

  1. [前台]---js+jquery校验姓名,手机号,身份证号

    记一次前台验证姓名,手机号,身份证号的代码,复制即用,前提是有引入jquery. var name = "姓名"if(!is_forbidName(name)){alert(&qu ...

  2. SpringBoot自定义注解实现身份证号格式校验

    背景 ​ 身份证的组成部分较为复杂, 如果仅使用正则表达式的话, 有些情况也无法校验出来, 例如正确的证件号为513334200310119074, 如果把最后一位变成9, 则是一个错误的证件号, 但 ...

  3. vue+element 身份证号码以及有效性校验 适用 15位 或18位

    data () {let idCardValidity = (rule, code, callback) => {var city = { 11: "北京", 12: &qu ...

  4. python 身份证号的有效性、生日(阴历阳历)、星座、生肖、性别、年龄、户籍所在地测试

    python 身份证号的有效性.生日(阴历阳历).星座.生肖.性别.年龄.户籍所在地测试 0x01 前言 0x02 身份证号码格式 0x03 地区 0x04 代码 0x05 效果 0x01 前言 本项 ...

  5. 验证身份证号 格式问题

    导入的时候 验证身份证号的格式问题 if(!sfzh.equals("")&&isIDNumber(sfzh) == false){returnMap.put(&q ...

  6. Java对姓名, 手机号, 身份证号, 地址进行脱敏

    替换几位就用几个*号 一.姓名 1, 脱敏规则: 只显示第一个汉字,比如李某某置换为李**, 李某置换为李* private static String desensitizedName(String ...

  7. 使用js验证身份证号格式以及身份证号中的生日验证

    由于不管是测试项目练手还是实际项目开发,都应该考虑数据的严密性和软件的通俗易懂的实用性,下面是我用js实现的验证身份证号格式以及身份证号中的生日验证代码 //生日移出点击事件验证身份证号中的生日验证 ...

  8. 完美通行证身份证号格式_如何渲染3D足球通行证网络

    完美通行证身份证号格式 Pass network analysis has long been a popular visualization method amongst football anal ...

  9. 完美通行证身份证号格式_使用通行证js进行节点js身份验证

    完美通行证身份证号格式 In this article, I will share my knowledge of authenticating node.js server using passpo ...

  10. JS校验手机号和身份证号格式

    1:校验手机号 //JS正则表达式校验手机号function isPoneAvailable(poneInput) {var myreg=/^[1][3,4,5,7,8][0-9]{9}$/;if ( ...

最新文章

  1. 使用Python和OpenCV构建图像金字塔
  2. node.js是开源的吗_为开源做贡献并不难:我为Node.js项目做贡献的旅程
  3. Java8的集合:HashMap的实现原理
  4. Ubuntu安装MySQL1 - 失败
  5. crtsiii型无砟轨道板_为什么高铁轨道不像普快列车轨道那样铺碎石?
  6. 计算机在材料中的运用结课,计算机在材料科学工程中的应用的结课论文.doc
  7. 《Head First设计模式》第九章(2)组合模式
  8. UI实用素材|APP动效设计
  9. c++ string 数组_PHP数组与字符串之间相互转换的方法
  10. 台达伺服电机编码器改功率刷功率软件
  11. matlab步长教程,matlab仿真步长
  12. FPGA零基础学习:按键控制LED
  13. 捷径|抖音去水印教程
  14. 退欧令英国科技业措手不及,可能不再享受多项利好政策
  15. 优雅使用Jsdelivr/CDN加速博客访问速度
  16. 【Java】各种日期转换
  17. c语言求某年某月1日是星期几,蔡勒(Zeller)公式:根据日期推算是星期几
  18. 曾梦想 if-else 走天涯?看看“责任树模式”优化
  19. vue3 reactive函数用法
  20. 吉林大学软件学院2021级计算机组成原理期末50道简答题

热门文章

  1. 图解 Python 编程(27) | 时间和日期(附要点速查表·完结)
  2. nginx 部署前端项目
  3. 极致物业管理软件的系统特点
  4. 预付费客户抄表管理系统的应用
  5. android 微信分享小程序 图片显示不全
  6. 聊聊我是如何编程入门的
  7. 二级计算机c语言各题型,计算机二级C语言都有哪些题型?
  8. 游戏平台系统源码有多重要?
  9. 银行软件的转账测试,网上银行测试转的钱怎么记会计分录?
  10. 分子动力学模拟-gromacs的基本使用