Android上身份号验证(只能检查18位)
来源:互联网 发布:c语言无限弹窗代码 编辑:程序博客网 时间:2024/04/29 12:11
private final static Pattern idcard = Pattern.compile("\\^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)$");
public boolean check(String idCard) { if (idcard.matcher(idCard).matches()) { if (idCard.length() == 18) { //将前17位加权因子保存在数组里 int[] idCardWi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; //这是除以11后,可能产生的11位余数、验证码,也保存成数组 int[] idCardY = {1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2}; //用来保存前17位各自乖以加权因子后的总和 int idCardWiSum = 0; for (int i = 0; i < 17; i++) { idCardWiSum += Integer.valueOf(idCard.substring(i, i + 1)) * idCardWi[i]; } int idCardMod = idCardWiSum % 11;//计算出校验码所在数组的位置 String idCardLast = idCard.substring(17);//得到最后一位身份证号码 //如果等于2,则说明校验码是10,身份证号码最后一位应该是X if (idCardMod == 2) { if (idCardLast.equalsIgnoreCase("X")) { return true; } else { Log.i(TAG, "尾数验证错误 "); } } else { //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码 if (idCardLast.equals(String.valueOf(idCardY[idCardMod]))) { return true; } else { Log.i(TAG, "check: 身份证无效"); } } } else { Log.i(TAG, "长度不够 "); } } else { Log.i("TAG", "身份证格式错误"); } return false; }
记录个身份证号验证代码。逻辑参考的网上的。自己验证了几个号码。没啥问题。
你可以拿去用,不过我也不保证百分百哈。运用了正则和严格的检查。只能检查18位身份证号。
正则也不知道对不对。如果错了还告诉我正确写法。
0 0
- Android上身份号验证(只能检查18位)
- Jquery表单验证(只能输入数字,检查复选框)
- Jquery表单验证(只能输入数字,检查复选框)
- swusoj(将军鬼上身啦!(0324))
- JS验证输入框只能输入数字,并且只能含有2位小数
- 营业执照编码验证规则(15位和18位)
- js 验证输入框中的验证码只能输入4位
- 18位身份证验证
- 18位身份证验证
- 18位身份证验证
- HDU 4512 最长公共上身子序列(加强)
- android EditText限制只能输入2位小数的解决方法
- Android EditText监听只能输入2位小数
- [Android] EditText设置只能输入2位小数的探讨
- 15位或18位身份证验证
- 验证文本框转化为金额,小数点后只能输入两位数字
- JS 验证文本框只能是数字和数字之后两位小数
- 18位身份证验证方法
- 利用JsonObject和JsonArray解析Josn
- Linux常用命令:which命令
- 副本构造器
- oracle中插入一条数据id自动增长,插入之后得到这个id
- jdbc实现对CLOB和BLOB数据类型操作
- Android上身份号验证(只能检查18位)
- mongodb的用户认证
- Linux常用命令:whereis 命令
- 数组去重
- 产品设计总结-App什么样字体适合长时间阅读
- .Net Reflector或DotPeek反编译后无法查看设计器的解决方法
- WiFi万能钥匙蹭网原理详细剖析
- Linux常用命令:locate 命令
- Android操作系统介绍