地址:

public class AddressValidator {public static void main(String[] args) {System.out.println(checkCorpAddress("哈哈"));}public static boolean checkCorpAddress(String address) {boolean flag;String reg = "(([\u4e00-\u9fa5]{3,})){1,}";try {Pattern regex = Pattern.compile(reg);Matcher matcher = regex.matcher(address);flag = matcher.matches();} catch (Exception e) {flag = false;}return flag;}}

身份证:

public class IdcardValidator {/*** <pre>* 省、直辖市代码表:*     11 : 北京  12 : 天津  13 : 河北       14 : 山西  15 : 内蒙古*     21 : 辽宁  22 : 吉林  23 : 黑龙江  31 : 上海  32 : 江苏*     33 : 浙江  34 : 安徽  35 : 福建       36 : 江西  37 : 山东*     41 : 河南  42 : 湖北  43 : 湖南       44 : 广东  45 : 广西      46 : 海南*     50 : 重庆  51 : 四川  52 : 贵州       53 : 云南  54 : 西藏*     61 : 陕西  62 : 甘肃  63 : 青海       64 : 宁夏  65 : 新疆*     71 : 台湾*     81 : 香港  82 : 澳门*     91 : 国外* </pre>*/private static String cityCode[] = { "11", "12", "13", "14", "15", "21","22", "23", "31", "32", "33", "34", "35", "36", "37", "41", "42","43", "44", "45", "46", "50", "51", "52", "53", "54", "61", "62","63", "64", "65", "71", "81", "82", "91" };/*** 每位加权因子*/private static int power[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5,8, 4, 2 };/*** 验证所有的身份证的合法性** @param idcard*            身份证* @return 合法返回true,否则返回false*/public static boolean isValidatedAllIdcard(String idcard) {if (idcard == null || "".equals(idcard)) {return false;}if (idcard.length() == 15) {return validate15IDCard(idcard);}return validate18Idcard(idcard);}/*** <p>* 判断18位身份证的合法性* </p>* 根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。* 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。* <p>* 顺序码: 表示在同一地址码所标识的区域范围内,对同年、同月、同 日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配 给女性。* </p>* <p>* 1.前1、2位数字表示:所在省份的代码; 2.第3、4位数字表示:所在城市的代码; 3.第5、6位数字表示:所在区县的代码;* 4.第7~14位数字表示:出生年、月、日; 5.第15、16位数字表示:所在地的派出所的代码;* 6.第17位数字表示性别:奇数表示男性,偶数表示女性;* 7.第18位数字是校检码:也有的说是个人信息码,一般是随计算机的随机产生,用来检验身份证的正确性。校检码可以是0~9的数字,有时也用x表示。* </p>* <p>* 第十八位数字(校验码)的计算方法为: 1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4* 2 1 6 3 7 9 10 5 8 4 2* </p>* <p>* 2.将这17位数字和系数相乘的结果相加。* </p>* <p>* 3.用加出来和除以11,看余数是多少* </p>* 4.余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3* 2。* <p>* 5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。* </p>** @param idcard* @return*/public static boolean validate18Idcard(String idcard) {if (idcard == null) {return false;}// 非18位为假if (idcard.length() != 18) {return false;}// 获取前17位String idcard17 = idcard.substring(0, 17);// 前17位全部为数字if (!isDigital(idcard17)) {return false;}String provinceid = idcard.substring(0, 2);// 校验省份if (!checkProvinceid(provinceid)) {return false;}// 校验出生日期String birthday = idcard.substring(6, 14);SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");try {Date birthDate = sdf.parse(birthday);String tmpDate = sdf.format(birthDate);if (!tmpDate.equals(birthday)) {// 出生年月日不正确return false;}} catch (ParseException e1) {return false;}// 获取第18位String idcard18Code = idcard.substring(17, 18);char c[] = idcard17.toCharArray();int bit[] = converCharToInt(c);int sum17 = 0;sum17 = getPowerSum(bit);// 将和值与11取模得到余数进行校验码判断String checkCode = getCheckCodeBySum(sum17);if (null == checkCode) {return false;}// 将身份证的第18位与算出来的校码进行匹配,不相等就为假if (!idcard18Code.equalsIgnoreCase(checkCode)) {return false;}return true;}/*** 校验15位身份证** <pre>* 只校验省份和出生年月日* </pre>** @param idcard* @return*/public static boolean validate15IDCard(String idcard) {if (idcard == null) {return false;}// 非15位为假if (idcard.length() != 15) {return false;}// 15全部为数字if (!isDigital(idcard)) {return false;}String provinceid = idcard.substring(0, 2);// 校验省份if (!checkProvinceid(provinceid)) {return false;}String birthday = idcard.substring(6, 12);SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");try {Date birthDate = sdf.parse(birthday);String tmpDate = sdf.format(birthDate);if (!tmpDate.equals(birthday)) {// 身份证日期错误return false;}} catch (ParseException e1) {return false;}return true;}/*** 将15位的身份证转成18位身份证** @param idcard* @return*/public static String convertIdcarBy15bit(String idcard) {if (idcard == null) {return null;}// 非15位身份证if (idcard.length() != 15) {return null;}// 15全部为数字if (!isDigital(idcard)) {return null;}String provinceid = idcard.substring(0, 2);// 校验省份if (!checkProvinceid(provinceid)) {return null;}String birthday = idcard.substring(6, 12);SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");Date birthdate = null;try {birthdate = sdf.parse(birthday);String tmpDate = sdf.format(birthdate);if (!tmpDate.equals(birthday)) {// 身份证日期错误return null;}} catch (ParseException e1) {return null;}Calendar cday = Calendar.getInstance();cday.setTime(birthdate);String year = String.valueOf(cday.get(Calendar.YEAR));String idcard17 = idcard.substring(0, 6) + year + idcard.substring(8);char c[] = idcard17.toCharArray();String checkCode = "";// 将字符数组转为整型数组int bit[] = converCharToInt(c);int sum17 = 0;sum17 = getPowerSum(bit);// 获取和值与11取模得到余数进行校验码checkCode = getCheckCodeBySum(sum17);// 获取不到校验位if (null == checkCode) {return null;}// 将前17位与第18位校验码拼接idcard17 += checkCode;return idcard17;}/*** 校验省份** @param provinceid* @return 合法返回TRUE,否则返回FALSE*/private static boolean checkProvinceid(String provinceid) {for (String id : cityCode) {if (id.equals(provinceid)) {return true;}}return false;}/*** 数字验证** @param str* @return*/private static boolean isDigital(String str) {return str.matches("^[0-9]*$");}/*** 将身份证的每位和对应位的加权因子相乘之后,再得到和值** @param bit* @return*/private static int getPowerSum(int[] bit) {int sum = 0;if (power.length != bit.length) {return sum;}for (int i = 0; i < bit.length; i++) {for (int j = 0; j < power.length; j++) {if (i == j) {sum = sum + bit[i] * power[j];}}}return sum;}/*** 将和值与11取模得到余数进行校验码判断** @param checkCode* @param sum17* @return 校验位*/private static String getCheckCodeBySum(int sum17) {String checkCode = null;switch (sum17 % 11) {case 10:checkCode = "2";break;case 9:checkCode = "3";break;case 8:checkCode = "4";break;case 7:checkCode = "5";break;case 6:checkCode = "6";break;case 5:checkCode = "7";break;case 4:checkCode = "8";break;case 3:checkCode = "9";break;case 2:checkCode = "x";break;case 1:checkCode = "0";break;case 0:checkCode = "1";break;}return checkCode;}/*** 将字符数组转为整型数组** @param c* @return* @throws NumberFormatException*/private static int[] converCharToInt(char[] c) throws NumberFormatException {int[] a = new int[c.length];int k = 0;for (char temp : c) {a[k++] = Integer.parseInt(String.valueOf(temp));}return a;}public static void main(String[] args) throws Exception {String idcard15 = "130321860311519";String idcard18 = "310103198811155044";//// 15位身份证System.out.println(isValidatedAllIdcard(idcard15));// 18位身份证System.out.println(isValidatedAllIdcard(idcard18));// 15位身份证转18位身份证System.out.println(convertIdcarBy15bit(idcard15));}
}

手机号:

public class MobileMailValidator {public static void main(String[] args) {System.out.println(checkEmail("14_8@qw.df"));System.out.println(checkMobileNumber("17745612833"));System.out.println(checkTel("12321"));}/*** 验证邮箱** @param email* @return*/public static boolean checkEmail(String email) {boolean flag = false;try {String check = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";Pattern regex = Pattern.compile(check);Matcher matcher = regex.matcher(email);flag = matcher.matches();} catch (Exception e) {flag = false;}return flag;}/*** 验证手机号码** @param mobiles* @return*/public static boolean checkMobileNumber(String mobileNumber) {boolean flag = false;try {Pattern regex = Pattern.compile("^1[34578]\\d{9}$");Matcher matcher = regex.matcher(mobileNumber);flag = matcher.matches();} catch (Exception e) {flag = false;}return flag;}public static boolean checkTel(String mobileNumber) {boolean flag = false;try {Pattern regex = Pattern.compile("^[0-9]{7,}$");Matcher matcher = regex.matcher(mobileNumber);flag = matcher.matches();} catch (Exception e) {flag = false;}return flag;}
}

名称:

public class NameValidator {public static void main(String[] args) {System.out.println(checkName("123231fdfa"));System.out.println(checkName("哈"));System.out.println(checkCorpName("哈哈哈哈"));}public static boolean checkName(String name) {boolean flag = false;String reg = "^(([\u4e00-\u9fa5]{2,8}))$";try {Pattern regex = Pattern.compile(reg);Matcher matcher = regex.matcher(name);flag = matcher.matches();} catch (Exception e) {flag = false;}return flag;}public static boolean checkCorpName(String name) {boolean flag;String reg = "^(([\u4e00-\u9fa5]{4,})|([a-zA-Z]{8,}))$";try {Pattern regex = Pattern.compile(reg);Matcher matcher = regex.matcher(name);flag = matcher.matches();} catch (Exception e) {flag = false;}return flag;}
}

各类参数校验(身份证,手机号等)验证UTIL相关推荐

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

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

  2. SpringBoot里参数校验/参数验证

    1.前言 在控制器类的方法里自己写校验逻辑代码当然也可以,只是代码比较丑陋,有点"low".业界有更好的处理方法,分别阐述如下. 2.PathVariable校验 @GetMapp ...

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

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

  4. jsr 正则验证_使用 Bean Validation 解决业务中参数校验

    痛点及现状 代码中常常见到如下代码: if (Objects.equal(0L ,repertory)){ return ApiResultMap.errorResult(-1 ,"操作数量 ...

  5. layui前端表单验证(身份证,手机号 图形验证码等)

    文章目录 前言 一.layui前端验证 二.使用步骤 1.以下介绍几个常用的前端验证 2.thinkphp后台验证 3.效果展示 前言 layui前端框架是一款比较流行的前端框架,多模块集成的UI框架 ...

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

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

  7. java 接口参数验证_SpringBoot实现通用的接口参数校验

    作者:cipher 来源:http://39sd.cn/560BA 本文介绍基于Spring Boot和JDK8编写一个AOP,结合自定义注解实现通用的接口参数校验. 缘由 目前参数校验常用的方法是在 ...

  8. bean validation校验方法参数_SpringBoot参数校验 从入门到精通 解决繁琐的参数验证工作...

    ● 手把手教你实现 SpringBoot与Vue整合开发 前后端分离 简单例子 详解●SQL优化经历  SQL执行效率提高了1000w倍●Java面试题 详解 由易到难● SQL语句大全详解 增删改查 ...

  9. mysql验证身份证号正确_通过SQL校验身份证号码是否正确

    根据提供的身份证号码信息验证身份证号码是否符合二代身份证规范,其中区域编码网上可下载. 使用数据库为DB2,但目测可以通用身份证号码第18位验证算法从网上查得,具体验证算法如下: 1.将前面的身份证号 ...

最新文章

  1. 架设win2003r2下配置好iis6+php+mysql_WIN2003+IIS6 PHP 5.3.8安装配置教程[图文]
  2. 面对大规模AI集成,企业为何迟迟犹豫?
  3. 大数相乘(大数阶乘模板)
  4. LIVE555再学习 -- live555实现RTSP直播服务器 分析
  5. 监控——《微服务设计》读书笔记
  6. webpack 保存文件后自动打包_继webpack后又一打包神器Parcel
  7. JavaScript学习之ES6学习之Promise
  8. UI基本设计素材模板|完整的线框图
  9. 比尔盖茨:反垄断案让我分心,不然微软定能打败安卓
  10. [转载] Java中为什么要有重载现象
  11. 图像处理控件ImageGear for .NET教程如何为应用程序 添加DICOM功能(2)
  12. 【读书笔记】代理模式代码(C#)
  13. SPSS Statistical 软件的使用
  14. 系列1—BabeLua入门
  15. C C++编程子资料库(小程序)
  16. Easy Unpack
  17. 创业反鸡汤--3.谈待遇
  18. 体百味人生,感产品之道
  19. 【Android】kotlin语法学习
  20. 论文:Discriminative Triad Matching and Reconstruction for Weakly Referring Expression Grounding

热门文章

  1. 什么是Spring、Spring的优点
  2. 雷军站台余承东看衰 游戏手机是个伪概念吗?
  3. 【金猿产品展】Smartbi一站式大数据分析平台——一个平台、所有数据、无限可能。...
  4. 一种可能的投资策略和一种可能的模糊的快速股票估值方法
  5. TI四芯片级联雷达评估板-校准
  6. PYNQ之Jupyter Notebook
  7. Android客户端异常检测
  8. 汽车的转向控制 外文翻译
  9. 网络工程师加入德云社说相声,他还骑摩托车环球旅行!!
  10. 给老师发邮件的格式参考