public String saveGreenPerson(HttpServletRequest request) {String msg = "验证未通过";String id = request.getParameter("id");String username = request.getParameter("username");String tel = request.getParameter("tel");String identity_card = request.getParameter("identity_card");String bank_card = request.getParameter("bank_card");String workShift = request.getParameter("workShift");String major = request.getParameter("major");if(!StringFacs.isEmpty(identity_card)){//校验身份证号码格式通过// 定义判别用户身份证号的正则表达式(15位或者18位,最后一位可以为字母)String regularExpression = "(^[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]$)|" +"(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)";boolean matches = identity_card.matches(regularExpression);Boolean identityCardRegular=false;if(identity_card.length()==18){try {char[] charArray = identity_card.toCharArray();//前十七位加权因子int[] idCardWi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};//这是除以11后,可能产生的11位余数对应的验证码String[] idCardY = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};int sum = 0;for (int i = 0; i < idCardWi.length; i++) {int current = Integer.parseInt(String.valueOf(charArray[i]));int count = current * idCardWi[i];sum += count;}char idCardLast = charArray[17];int idCardMod = sum % 11;if (idCardY[idCardMod].toUpperCase().equals(String.valueOf(idCardLast).toUpperCase())) {identityCardRegular=true;}} catch (Exception e) {}}if(identityCardRegular){//身份证号不为空,查询是否重复Map idCard1 = greeningAndWateringService.getIdCard(identity_card);//没有重复身份证号if (idCard1.size() == 0 || idCard1 == null) {//手机号验证通过if(tel.matches("^1[3|4|5|7|8][0-9]{9}$")){//校验银行卡号if(bank_card.length() < 15 || bank_card.length() > 19){msg="请重新输入银行卡号!";}else {char bit = getBankCardCheckCode(bank_card.substring(0, bank_card.length() - 1));if (bit == 'N') {msg = "银行卡号格式错误!请重新输入";} else {if(bank_card.charAt(bank_card.length() - 1) == bit){GreenPersonEntity greenPersonEntity = new GreenPersonEntity();greenPersonEntity.setId(id);greenPersonEntity.setUsername(username);greenPersonEntity.setTel(tel);greenPersonEntity.setIdentityCard(identity_card);greenPersonEntity.setBankCard(bank_card);greenPersonEntity.setWorkShift(workShift);greenPersonEntity.setMajor(major);appDao.saveGreenPerson(greenPersonEntity);msg = "验证通过";}else{msg = "银行卡号格式错误!请重新输入";}}}}else{msg = "手机号格式有误!请重新输入";}}else {msg = "身份证号码重复!请重新输入";}}else{//身份证号码格式错误msg="请输入正确的身份证号码!";}}else{//身份证号码为空msg="请输入正确的身份证号码!";}return msg;}public static char getBankCardCheckCode(String nonCheckCodeCardId) {if (nonCheckCodeCardId == null || nonCheckCodeCardId.trim().length() == 0|| !nonCheckCodeCardId.matches("\\d+")) {//如果传的不是数据返回Nreturn 'N';}char[] chs = nonCheckCodeCardId.trim().toCharArray();int luhmSum = 0;for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) {int k = chs[i] - '0';if (j % 2 == 0) {k *= 2;k = k / 10 + k % 10;}luhmSum += k;}return (luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0');}

Java校验身份证、手机号、银行卡号相关推荐

  1. java校验身份证号实例

    这是笔者整理的比较详细的java后端校验身份证号码的测试demo,希望对你有用,哈哈哈~ 不多说,直接上代码,喜欢的多多评论点赞,哈哈哈~ package com.lg.handlers;import ...

  2. Java校验身份证号工具类

    直接上代码,该util可以校验身份证号,可以获取年龄.性别.出生日期. public class PersonIdCardUtil {/*** 省.直辖市代码表:* 11 : 北京 12 : 天津 1 ...

  3. java校验身份证的合法性

    一.判断身份证合法性的规则 1.首先先科普一下身份证号码的数字代表什么? 根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和 ...

  4. Java校验身份证合法性 (通过火车票上显示的号码计算身份证号)

    今天看到CSDN推送的消息<我用 Python 算出了同事的身份证号码>自己也想用Java写一个! 当然稍稍改一下就能做身份证合法校验! 下面贴代码! package test;impor ...

  5. java校验身份证的合法性、根据身份证获取生日等工具类

    文章目录 一.校验15位或者18位身份证的合法性 二.从身份证号中反向获取生日.性别等信息 一.校验15位或者18位身份证的合法性 import java.text.ParseException; i ...

  6. js正则表达式校验:手机号、身份证、护照、港澳台通行证、银行卡号、车牌号等......

    js正则表达式校验:手机号.身份证.护照.港澳台通行证.银行卡号等...... 1.手机号 2.身份证号 3.护照 4.港澳台通行证.居住证 5.银行卡号 6.军官证 7.户口本 8.用户名.中文姓名 ...

  7. 表单校验之---校验姓名/护照正则/台湾往来通行证/校验身份证号/港澳往来通行证正则/军官证正则/检验手机号/校验银行卡号

    常用表单校验 1.校验姓名       2.护照正则      3.台湾往来通行证          4.校验身份证号         5.港澳往来通行证正则 6.军官证正则     7.检验手机号  ...

  8. 手机号,身份证,银行卡号数据脱敏

    手机号,身份证,银行卡号数据脱敏 主体 /*** <p>* 数据脱敏* (1)手机号(联系方式类型为:手机):* 正常显示前3位后4位,其他位用*补齐,例如:159****5865* (2 ...

  9. 数据校验(身份证,ip地址,银行卡号等)

    数据校验正则记录: public class DataValidateUtil {public static boolean validateRiskInfo(String dataType,Stri ...

  10. vue组件中校验身份证号,手机号和邮箱

    vue组件中校验身份证号,手机号和邮箱 直接上代码 一.在js文件中添加校验方式和方法 1. 身份证号码校验(说明,这个身份证校验的方式很精确,算法仔细推荐使用) export function id ...

最新文章

  1. 聊天机器人之环境准备
  2. 如何只在IE上加载CSS样式表
  3. Leangoo看板标签的用法(scrum敏捷开发)
  4. 新书问答:Company-Wide Agility
  5. 放肆地使用UIBezierPath和CAShapeLayer画各种图形
  6. 大数据平台蓝图_数据科学面试蓝图
  7. matplotlib布局_Matplotlib多列,行跨度布局
  8. 基于 Token 的身份验证方法
  9. c语言程序输出时有没有分号,问什么C程序里总是提示缺少分号;,而明明有分号?...
  10. 通过脚本设置Windows系统ip地址
  11. 百度优化和谷歌优化的不同点
  12. 数据库连接字符串 mysql_数据库连接字符串(MySQL,SQL Server,Oracle)
  13. 【高并发】java中的线程池 ThreadPoolExecutor
  14. Java字符串处理之返回指定字符串下标(indexOf)
  15. python 3.5.2页面_笔者操作win10系统搭建Python 3.5.2开发环境的详细方案
  16. 数据库读写分离这个坑,你应该踩过吧?
  17. EyouCms前台GetShell漏洞复现
  18. @click.prevent.native作用
  19. 520情人节告白❤HTML+CSS+JavaScript实现抖音流动爱心
  20. 谷歌浏览器打不开产品给的原型图,提示AXURE RP EXTENSION For Chrome

热门文章

  1. Egret 利用ImageLoader加载服务器图片
  2. RabbitMQ的安装教程
  3. Unable to start embedded Tomcat
  4. 计算机工资表怎么打,Word怎么制作工资条 Word制作工资条教程-电脑教程
  5. 举个栗子!Tableau技巧(59):学做两个集合的维恩图(文氏图)Venn diagram
  6. 人才资源开发杂志人才资源开发杂志社人才资源开发编辑部2022年第21期目录
  7. C#学习笔记(三)—–C#高级特性:dynamic
  8. 论文阅读:Securely Outsourcing Neural Network Inferenceto the Cloud with Lightweight Techniques
  9. 浏览器页面前端自适应方案
  10. --hot 和 --inline的区别