Java 表单注册常用正则表达式验证工具类,常用正则表达式大集合。

pom依赖:

        <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>5.1.3.Final</version></dependency><dependency><groupId>javax.el</groupId><artifactId>javax.el-api</artifactId><version>2.2.4</version></dependency><dependency><groupId>org.glassfish.web</groupId><artifactId>javax.el</artifactId><version>2.2.4</version></dependency>

校验工具类:

package com.lengxiaoyu.common.utils;import org.apache.commons.collections4.CollectionUtils;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.groups.Default;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class ValidationUtils {//$$$$$$$$$$$$$$$$$$$$$$$$$$$正则常量定义$$$$$$$$$$$$$$$$$$$$$$$$$$$/*** Email正则表达式="^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";*/public static final String EMAIL = "\\w+(\\.\\w+)*@\\w+(\\.\\w+)+";/*** 电话号码正则表达式= (^(\d{2,4}[-_-—]?)?\d{3,8}([-_-—]?\d{3,8})?([-_-—]?\d{1,7})?$)|(^0?1[35]\d{9}$)*/public static final String PHONE = "(^(\\d{2,4}[-_-—]?)?\\d{3,8}([-_-—]?\\d{3,8})?([-_-—]?\\d{1,7})?$)|(^0?1[35]\\d{9}$)" ;/*** 手机号码正则表达式=^(13[0-9]|14[0-9]|15[0-9]|17[0-9]|18[0-9])\d{8}$*/public static final String MOBILE ="^(13[0-9]|14[0-9]|15[0-9]|17[0-9]|18[0-9])\\d{8}$";/*** Integer正则表达式 ^-?(([1-9]\d*$)|0)*/public static final String  INTEGER = "^-?(([1-9]\\d*$)|0)";/*** 正整数正则表达式 >=0 ^[1-9]\d*|0$*/public static final String  INTEGER_NEGATIVE = "^[1-9]\\d*|0$";/*** 负整数正则表达式 <=0 ^-[1-9]\d*|0$*/public static final String  INTEGER_POSITIVE = "^-[1-9]\\d*|0$";/*** Double正则表达式 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$*/public static final String  DOUBLE ="^-?([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0)$";/*** 正Double正则表达式 >=0  ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ */public static final String  DOUBLE_NEGATIVE ="^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0$";/*** 负Double正则表达式 <= 0  ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$*/public static final String  DOUBLE_POSITIVE ="^(-([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*))|0?\\.0+|0$";/*** 年龄正则表达式 ^(?:[1-9][0-9]?|1[01][0-9]|120)$ 匹配0-120岁*/public static final String  AGE="^(?:[1-9][0-9]?|1[01][0-9]|120)$";/*** 邮编正则表达式  [0-9]\d{5}(?!\d) 国内6位邮编*/public static final String  CODE="[0-9]\\d{5}(?!\\d)";/*** 匹配由数字、26个英文字母或者下划线组成的字符串 ^\w+$*/public static final String STR_ENG_NUM_="^\\w+$";/*** 匹配由数字和26个英文字母组成的字符串 ^[A-Za-z0-9]+$*/public static final String STR_ENG_NUM="^[A-Za-z0-9]+";/*** 匹配由26个英文字母组成的字符串  ^[A-Za-z]+$*/public static final String STR_ENG="^[A-Za-z]+$";/*** 过滤特殊字符串正则* regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";*/public static final String STR_SPECIAL="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";/**** 日期正则 支持:*  YYYY-MM-DD*  YYYY/MM/DD*  YYYY_MM_DD*  YYYYMMDD*  YYYY.MM.DD的形式*/public static final String DATE_ALL="((^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._]?)(10|12|0?[13578])([-\\/\\._]?)(3[01]|[12][0-9]|0?[1-9])$)" +"|(^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._]?)(11|0?[469])([-\\/\\._]?)(30|[12][0-9]|0?[1-9])$)" +"|(^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._]?)(0?2)([-\\/\\._]?)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)|(^([3579][26]00)" +"([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)" +"|(^([1][89][0][48])([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)|(^([2-9][0-9][0][48])([-\\/\\._]?)" +"(0?2)([-\\/\\._]?)(29)$)" +"|(^([1][89][2468][048])([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)|(^([2-9][0-9][2468][048])([-\\/\\._]?)(0?2)" +"([-\\/\\._]?)(29)$)|(^([1][89][13579][26])([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)|" +"(^([2-9][0-9][13579][26])([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$))";/**** 日期正则 支持:*  YYYY-MM-DD*/public static final String DATE_FORMAT1="(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)";/*** URL正则表达式* 匹配 http www ftp*/public static final String URL = "^(http|www|ftp|)?(://)?(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*((:\\d+)?)(/(\\w+(-\\w+)*))*(\\.?(\\w)*)(\\?)?" +"(((\\w*%)*(\\w*\\?)*(\\w*:)*(\\w*\\+)*(\\w*\\.)*(\\w*&)*(\\w*-)*(\\w*=)*(\\w*%)*(\\w*\\?)*" +"(\\w*:)*(\\w*\\+)*(\\w*\\.)*" +"(\\w*&)*(\\w*-)*(\\w*=)*)*(\\w*)*)$";/*** 身份证正则表达式*/public static final String IDCARD="((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)[0-9]{4})" +"(([1|2][0-9]{3}[0|1][0-9][0-3][0-9][0-9]{3}" +"[Xx0-9])|([0-9]{2}[0|1][0-9][0-3][0-9][0-9]{3}))";/*** 机构代码*/public static final String JIGOU_CODE = "^[A-Z0-9]{8}-[A-Z0-9]$";/*** 匹配数字组成的字符串  ^[0-9]+$*/public static final String STR_NUM = "^[0-9]+$";//$$$$$$$$$$$$$$$$$$$$$$$$$$$验证方法$$$$$$$$$$$$$$$$$$$$$$$$$$$/*** 判断字段是否为空 符合返回ture* @param str* @return boolean*/public static synchronized boolean StrisNull(String str) {return null == str || str.trim().length() <= 0 ? true : false ;}/*** 判断字段是非空 符合返回ture* @param str* @return boolean*/public static  boolean StrNotNull(String str) {return !StrisNull(str) ;}/*** 字符串null转空* @param str* @return boolean*/public static  String nulltoStr(String str) {return StrisNull(str)?"":str;}/*** 字符串null赋值默认值* @param str    目标字符串* @param defaut 默认值* @return String*/public static  String nulltoStr(String str,String defaut) {return StrisNull(str)?defaut:str;}/*** 判断字段是否为Email 符合返回ture* @param str* @return boolean*/public static  boolean isEmail(String str) {return Regular(str,EMAIL);}/*** 判断是否为电话号码 符合返回ture* @param str* @return boolean*/public static  boolean isPhone(String str) {return Regular(str,PHONE);}/*** 判断是否为手机号码 符合返回ture* @param str* @return boolean*/public static  boolean isMobile(String str) {return Regular(str,MOBILE);}/*** 判断是否为Url 符合返回ture* @param str* @return boolean*/public static  boolean isUrl(String str) {return Regular(str,URL);}/*** 判断字段是否为数字 正负整数 正负浮点数 符合返回ture* @param str* @return boolean*/public static  boolean isNumber(String str) {return Regular(str,DOUBLE);}/*** 判断字段是否为INTEGER  符合返回ture* @param str* @return boolean*/public static  boolean isInteger(String str) {return Regular(str,INTEGER);}/*** 判断字段是否为正整数正则表达式 >=0 符合返回ture* @param str* @return boolean*/public static  boolean isINTEGER_NEGATIVE(String str) {return Regular(str,INTEGER_NEGATIVE);}/*** 判断字段是否为负整数正则表达式 <=0 符合返回ture* @param str* @return boolean*/public static  boolean isINTEGER_POSITIVE(String str) {return Regular(str,INTEGER_POSITIVE);}/*** 判断字段是否为DOUBLE 符合返回ture* @param str* @return boolean*/public static  boolean isDouble(String str) {return Regular(str,DOUBLE);}/*** 判断字段是否为正浮点数正则表达式 >=0 符合返回ture* @param str* @return boolean*/public static  boolean isDOUBLE_NEGATIVE(String str) {return Regular(str,DOUBLE_NEGATIVE);}/*** 判断字段是否为负浮点数正则表达式 <=0 符合返回ture* @param str* @return boolean*/public static  boolean isDOUBLE_POSITIVE(String str) {return Regular(str,DOUBLE_POSITIVE);}/*** 判断字段是否为日期 符合返回ture* @param str* @return boolean*/public static  boolean isDate(String str) {return Regular(str,DATE_ALL);}/*** 验证2010-12-10* @param str* @return*/public static  boolean isDate1(String str) {return Regular(str,DATE_FORMAT1);}/*** 判断字段是否为年龄 符合返回ture* @param str* @return boolean*/public static  boolean isAge(String str) {return Regular(str,AGE) ;}/*** 判断字段是否超长* 字串为空返回fasle, 超过长度{leng}返回ture 反之返回false* @param str* @param leng* @return boolean*/public static  boolean isLengOut(String str,int leng) {return StrisNull(str)?false:str.trim().length() > leng ;}/*** 判断字段是否为身份证 符合返回ture* @param str* @return boolean*/public static  boolean isIdCard(String str) {if(StrisNull(str)) return false ;if(str.trim().length() == 15 || str.trim().length() == 18) {return Regular(str,IDCARD);}else {return false ;}}/*** 判断字段是否为邮编 符合返回ture* @param str* @return boolean*/public static  boolean isCode(String str) {return Regular(str,CODE) ;}/*** 判断字符串是不是全部是英文字母* @param str* @return boolean*/public static boolean isEnglish(String str) {return Regular(str,STR_ENG) ;}/*** 判断字符串是不是全部是英文字母+数字* @param str* @return boolean*/public static boolean isENG_NUM(String str) {return Regular(str,STR_ENG_NUM) ;}/*** 判断字符串是不是全部是英文字母+数字+下划线* @param str* @return boolean*/public static boolean isENG_NUM_(String str) {return Regular(str,STR_ENG_NUM_) ;}/*** 过滤特殊字符串 返回过滤后的字符串* @param str* @return boolean*/public static  String filterStr(String str) {Pattern p = Pattern.compile(STR_SPECIAL);Matcher m = p.matcher(str);return   m.replaceAll("").trim();}/*** 校验机构代码格式* @return*/public static boolean isJigouCode(String str){return Regular(str,JIGOU_CODE) ;}/*** 判断字符串是不是数字组成* @param str* @return boolean*/public static boolean isSTR_NUM(String str) {return Regular(str,STR_NUM) ;}/*** 匹配是否符合正则表达式pattern 匹配返回true* @param str 匹配的字符串* @param pattern 匹配模式* @return boolean*/private static  boolean Regular(String str,String pattern){if(null == str || str.trim().length()<=0) {return false;}Pattern p = Pattern.compile(pattern);Matcher m = p.matcher(str);return m.matches();}//$$$$$$$$$$$$$$$$$$$$$$$$$$$校验工具开始$$$$$$$$$$$$$$$$$$$$$$$$$$$private static Validator validator =  Validation.buildDefaultValidatorFactory().getValidator();/*** 校验实体* @param obj 被校验对象* @param <T>* @return*/public static <T> ValidationResult validateEntity(T obj){ValidationResult result = new ValidationResult();Set<ConstraintViolation<T>> set = validator.validate(obj, Default.class);if( CollectionUtils.isNotEmpty(set) ){result.setHasErrors(true);Map<String,String> errorMsg = new HashMap<String,String>();for(ConstraintViolation<T> cv : set){errorMsg.put(cv.getPropertyPath().toString(), cv.getMessage());}result.setErrorMsg(errorMsg);}return result;}public static <T> ValidationResult validateProperty(T obj,String propertyName){ValidationResult result = new ValidationResult();Set<ConstraintViolation<T>> set = validator.validateProperty(obj,propertyName,Default.class);if( CollectionUtils.isNotEmpty(set) ){result.setHasErrors(true);Map<String,String> errorMsg = new HashMap<String,String>();for(ConstraintViolation<T> cv : set){errorMsg.put(propertyName, cv.getMessage());}result.setErrorMsg(errorMsg);}return result;}}

校验结果:

package com.lengxiaoyu.common.utils;import java.util.Map;public class ValidationResult {/*** 校验结果是否有错*/private boolean hasErrors;/*** 校验错误信息*/private Map<String,String> errorMsg;public boolean isHasErrors() {return hasErrors;}public void setHasErrors(boolean hasErrors) {this.hasErrors = hasErrors;}public Map<String, String> getErrorMsg() {return errorMsg;}public void setErrorMsg(Map<String, String> errorMsg) {this.errorMsg = errorMsg;}@Overridepublic String toString() {return "ValidationResult [hasErrors=" + hasErrors + ", errorMsg="+ errorMsg + "]";}}

深入学习,请参考

http://www.runoob.com/java/java-regular-expressions.html

JAVA 正则表达式 RegexUtil相关推荐

  1. java正则表达式课程_通过此免费课程学习正则表达式

    java正则表达式课程 by Beau Carnes 通过博卡恩斯 通过此免费课程学习正则表达式 (Learn Regular Expressions with this free course) & ...

  2. java正则表达式 1,Java正则表达式学习(1)

    Java正则表达式学习(一) 1.什么是正则表达式: 正则表达式(regular expressions) 是一种描述字符串集的方法,它是以字符串集中各种字符串的公有特征为依据的. 正则表达式可以用于 ...

  3. 孪生素数 java代码_科学网—孪生素数猜想——利用 Java + 正则表达式 输出孪生素数对 - 马廷灿的博文...

    查了一下资料,发现正则表达式竟然可以用来检查素数(http://coolshell.cn/articles/2704.html)!(由于工作需要,几年前开始接触.利用正则表达式,给工作带了很大方便,也 ...

  4. java正则表达式的用法_Java 正则表达式的使用

    Java 正则表达式的使用 1:正则表达式语法大全 字符 说明 \ 将下一字符标记为特殊字符.文本.反向引用或八进制转义符.例如,"n"匹配字符"n".&quo ...

  5. Java正则表达式--Matcher.group函数的用法

    https://www.cnblogs.com/jiafuwei/p/6080984.html Java正则表达式--Matcher.group函数的用法 原来,group是针对()来说的,group ...

  6. java 正则表达式入门(一)

    Java正则表达式 定义:具有特定规则的一种表达式语言. 作用:专门用于操作字符串,操作意味着(校验,截取).且可以简化我们对字符串的操作方式 比如,验证手机号码 如果没有正则表达式我们的过程就应该是 ...

  7. bigint对应java什么类型_「JAVA」从格式化输出到扫描输入,深究Java正则表达式匹配之道

    字符串是不可变的 字符串是不可变的,也就是说当字符串的内容发生改变的时候,会创建一个新的String对象:但是如果内容没有发生改变的时候,String类的方法会返回原字符串对象的引用. 而正则表达式往 ...

  8. Java 正则表达式使用详解

    今天研究开源项目,哆啦A梦,研究里面显示log 的原理. 后来发现,用到了正则表达式.觉得很有用,就捡起来,重新研究一下. 学习思路指导: 每一门学问,最好的深入学习方法,是去其官网,研究其说明文档. ...

  9. java正则表达式 过滤特殊字符的正则表达式

    在网上找了好久也没找到个合适的正则表达式以过滤特殊字符:自己学习了下,写了两个,实现要求. Java代码 // 过滤特殊字符 public static String StringFilter(Str ...

最新文章

  1. 第四范式陈雨强:万字深析工业界机器学习最新黑科技
  2. c语言中fflush的运用为什么没有效果呢,测试平台linux
  3. html相邻兄弟选择器,CSS CSS 相邻兄弟选择器 - 闪电教程JSRUN
  4. python【数据结构与算法】判断对称二叉树
  5. apply和call
  6. python写配置文件方法_Python读写配置文件的方法
  7. java inputstream read_20191209-java部分流处理
  8. 4种方法帮你解决IntelliJ IDEA控制台中文乱码问题
  9. 学习python这门课的感受_关于我学习了编程小白的第一本Python入门书之后的感受 200110900207...
  10. Python菜鸟入门:day03运算符
  11. MySQL电影院管理系统_电影院售票管理系统
  12. 数学:确定性的丧失---第二章 数学真理的繁荣
  13. angular路由守卫
  14. 哲学家问题(图形化实现)
  15. APP项目开发失败案例经验汇总
  16. 范式1NF,2NF,3NF
  17. html emsp ensp nbsp; thinsp;空格到底怎么占用像素的
  18. 百度云主机(配置、调试环境)文件上传(快速建站,实现首页访问) - FTP篇
  19. 普通用户获取详细执行计划需要哪些权限
  20. VisualGDB导致Visual Studio报错:未能从程序集Package.LanguageService中加载类型xxx

热门文章

  1. Java与MySQL连接报错_java连接数据库报错(
  2. [技术博客] 微信小程序的formid获取
  3. SCUT - 299 - Kaildls的数组划分 - dp - 高精
  4. JavaScript 循环
  5. SQLServer存储过程编写规则
  6. Tutorial 2: Requests and Responses
  7. linux编程问题记录
  8. 算法导论 第十三章 红黑树(python)-1插入
  9. 单线驱动74hc595(转)
  10. Com/ATL编程 一些学习链接