Java校验身份证、手机号、银行卡号
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校验身份证、手机号、银行卡号相关推荐
- java校验身份证号实例
这是笔者整理的比较详细的java后端校验身份证号码的测试demo,希望对你有用,哈哈哈~ 不多说,直接上代码,喜欢的多多评论点赞,哈哈哈~ package com.lg.handlers;import ...
- Java校验身份证号工具类
直接上代码,该util可以校验身份证号,可以获取年龄.性别.出生日期. public class PersonIdCardUtil {/*** 省.直辖市代码表:* 11 : 北京 12 : 天津 1 ...
- java校验身份证的合法性
一.判断身份证合法性的规则 1.首先先科普一下身份证号码的数字代表什么? 根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和 ...
- Java校验身份证合法性 (通过火车票上显示的号码计算身份证号)
今天看到CSDN推送的消息<我用 Python 算出了同事的身份证号码>自己也想用Java写一个! 当然稍稍改一下就能做身份证合法校验! 下面贴代码! package test;impor ...
- java校验身份证的合法性、根据身份证获取生日等工具类
文章目录 一.校验15位或者18位身份证的合法性 二.从身份证号中反向获取生日.性别等信息 一.校验15位或者18位身份证的合法性 import java.text.ParseException; i ...
- js正则表达式校验:手机号、身份证、护照、港澳台通行证、银行卡号、车牌号等......
js正则表达式校验:手机号.身份证.护照.港澳台通行证.银行卡号等...... 1.手机号 2.身份证号 3.护照 4.港澳台通行证.居住证 5.银行卡号 6.军官证 7.户口本 8.用户名.中文姓名 ...
- 表单校验之---校验姓名/护照正则/台湾往来通行证/校验身份证号/港澳往来通行证正则/军官证正则/检验手机号/校验银行卡号
常用表单校验 1.校验姓名 2.护照正则 3.台湾往来通行证 4.校验身份证号 5.港澳往来通行证正则 6.军官证正则 7.检验手机号 ...
- 手机号,身份证,银行卡号数据脱敏
手机号,身份证,银行卡号数据脱敏 主体 /*** <p>* 数据脱敏* (1)手机号(联系方式类型为:手机):* 正常显示前3位后4位,其他位用*补齐,例如:159****5865* (2 ...
- 数据校验(身份证,ip地址,银行卡号等)
数据校验正则记录: public class DataValidateUtil {public static boolean validateRiskInfo(String dataType,Stri ...
- vue组件中校验身份证号,手机号和邮箱
vue组件中校验身份证号,手机号和邮箱 直接上代码 一.在js文件中添加校验方式和方法 1. 身份证号码校验(说明,这个身份证校验的方式很精确,算法仔细推荐使用) export function id ...
最新文章
- 聊天机器人之环境准备
- 如何只在IE上加载CSS样式表
- Leangoo看板标签的用法(scrum敏捷开发)
- 新书问答:Company-Wide Agility
- 放肆地使用UIBezierPath和CAShapeLayer画各种图形
- 大数据平台蓝图_数据科学面试蓝图
- matplotlib布局_Matplotlib多列,行跨度布局
- 基于 Token 的身份验证方法
- c语言程序输出时有没有分号,问什么C程序里总是提示缺少分号;,而明明有分号?...
- 通过脚本设置Windows系统ip地址
- 百度优化和谷歌优化的不同点
- 数据库连接字符串 mysql_数据库连接字符串(MySQL,SQL Server,Oracle)
- 【高并发】java中的线程池 ThreadPoolExecutor
- Java字符串处理之返回指定字符串下标(indexOf)
- python 3.5.2页面_笔者操作win10系统搭建Python 3.5.2开发环境的详细方案
- 数据库读写分离这个坑,你应该踩过吧?
- EyouCms前台GetShell漏洞复现
- @click.prevent.native作用
- 520情人节告白❤HTML+CSS+JavaScript实现抖音流动爱心
- 谷歌浏览器打不开产品给的原型图,提示AXURE RP EXTENSION For Chrome
热门文章
- Egret 利用ImageLoader加载服务器图片
- RabbitMQ的安装教程
- Unable to start embedded Tomcat
- 计算机工资表怎么打,Word怎么制作工资条 Word制作工资条教程-电脑教程
- 举个栗子!Tableau技巧(59):学做两个集合的维恩图(文氏图)Venn diagram
- 人才资源开发杂志人才资源开发杂志社人才资源开发编辑部2022年第21期目录
- C#学习笔记(三)—–C#高级特性:dynamic
- 论文阅读:Securely Outsourcing Neural Network Inferenceto the Cloud with Lightweight Techniques
- 浏览器页面前端自适应方案
- --hot 和 --inline的区别