package com.tongrong.utils;

import java.util.Collection;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; /**
* Java表单验证工具类
*
* @author jiqinlin
*
*/
@SuppressWarnings("unchecked")
public class RegexUtil { public static void main(String[] args) {
// System.out.println("过滤中英文特殊字符: "+RegexUtil.stringFilter("中国~~!#$%%."));
// System.out.println("是否包含中英文特殊字符: "+RegexUtil.isContainsSpecialChar("12"));
// System.out.println("过滤html代码: "+RegexUtil.htmltoText("<JAVASCRIPT>12</JAVASCRIPT>DDDDD"));
// System.out.println("判断中文字符: "+RegexUtil.isChineseChar("中国!"));
System.out.println("匹配汉字: "+RegexUtil.isChinese("中国!"));
// System.out.println("判断英文字符: "+RegexUtil.isEnglish("abc!"));
// System.out.println("判断合法字符: "+RegexUtil.isRightfulString("abc_-11AAA"));
// System.out.println("邮政编码验证: "+RegexUtil.isZipCode("162406"));
// System.out.println("身份证号码验证: "+RegexUtil.isIdCardNo("35052419880210133e"));
// System.out.println("手机号码验证: "+RegexUtil.isMobile("18918611111"));
// System.out.println("电话号码验证: "+RegexUtil.isPhone("8889333"));
// System.out.println("电话号码验证: "+RegexUtil.isNumeric("888.9333"));
// System.out.println("匹配密码: "+RegexUtil.isPwd("d888d_ddddd"));
// System.out.println("匹配密码: "+RegexUtil.isUrl("http://baidu.com"));
System.out.println("验证字符: "+RegexUtil.stringCheck("中文aabc001_-"));
// System.out.println(isEmail("416501600@qq.com"));
//http://baidu.com www.baidu.com baidu.com
// System.out.println(NumberUtils.toInt("-0000000002"));
} public final static boolean isNull(Object[] objs){
if(objs==null||objs.length==0) return true;
return false;
} public final static boolean isNull(Integer integer){
if(integer==null||integer==0) return true;
return false;
} public final static boolean isNull(Collection collection){
if(collection==null||collection.size()==0) return true;
return false;
} public final static boolean isNull(Map map){
if(map==null||map.size()==0) return true;
return false;
} public final static boolean isNull(String str){
return str == null || "".equals(str.trim()) || "null".equals(str.toLowerCase());
} public final static boolean isNull(Long longs){
if(longs==null||longs==0) return true;
return false;
} public final static boolean isNotNull(Long longs){
return !isNull(longs);
} public final static boolean isNotNull(String str){
return !isNull(str);
} public final static boolean isNotNull(Collection collection){
return !isNull(collection);
} public final static boolean isNotNull(Map map){
return !isNull(map);
} public final static boolean isNotNull(Integer integer){
return !isNull(integer);
} public final static boolean isNotNull(Object[] objs){
return !isNull(objs);
} /**
* 匹配URL地址
*
* @param str
* @return
* @author jiqinlin
*/
public final static boolean isUrl(String str) {
return match(str, "^http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$");
} /**
* 匹配密码,以字母开头,长度在6-12之间,只能包含字符、数字和下划线。
*
* @param str
* @return
* @author jiqinlin
*/
public final static boolean isPwd(String str) {
return match(str, "^[a-zA-Z]\\w{6,12}$");
} /**
* 验证字符,只能包含中文、英文、数字、下划线等字符。
*
* @param str
* @return
* @author jiqinlin
*/
public final static boolean stringCheck(String str) {
return match(str, "^[a-zA-Z0-9\u4e00-\u9fa5-_]+$");
} /**
* 匹配Email地址
*
* @param str
* @return
* @author jiqinlin
*/
public final static boolean isEmail(String str) {
return match(str, "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
} /**
* 匹配非负整数(正整数+0)
*
* @param str
* @return
* @author jiqinlin
*/
public final static boolean isInteger(String str) {
return match(str, "^[+]?\\d+$");
} /**
* 判断数值类型,包括整数和浮点数
*
* @param str
* @return
* @author jiqinlin
*/
public final static boolean isNumeric(String str) {
if(isFloat(str) || isInteger(str)) return true;
return false;
} /**
* 只能输入数字
*
* @param str
* @return
* @author jiqinlin
*/
public final static boolean isDigits(String str) {
return match(str, "^[0-9]*$");
} /**
* 匹配正浮点数
*
* @param str
* @return
* @author jiqinlin
*/
public final static boolean isFloat(String str) {
return match(str, "^[-\\+]?\\d+(\\.\\d+)?$");
} /**
* 联系电话(手机/电话皆可)验证
*
* @param text
* @return
* @author jiqinlin
*/
public final static boolean isTel(String text){
if(isMobile(text)||isPhone(text)) return true;
return false;
} /**
* 电话号码验证
*
* @param text
* @return
* @author jiqinlin
*/
public final static boolean isPhone(String text){
return match(text, "^(\\d{3,4}-?)?\\d{7,9}$");
} /**
* 手机号码验证
*
* @param text
* @return
* @author jiqinlin
*/
public final static boolean isMobile(String text){
if(text.length()!=11) return false;
return match(text, "^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\\d{8})$");
} /**
* 身份证号码验证
*
* @param text
* @return
* @author jiqinlin
*/
public final static boolean isIdCardNo(String text){
return match(text, "^(\\d{6})()?(\\d{4})(\\d{2})(\\d{2})(\\d{3})(\\w)$");
} /**
* 邮政编码验证
*
* @param text
* @return
* @author jiqinlin
*/
public final static boolean isZipCode(String text){
return match(text, "^[0-9]{6}$");
} /**
* 判断整数num是否等于0
*
* @param num
* @return
* @author jiqinlin
*/
public final static boolean isIntEqZero(int num){
return num==0;
} /**
* 判断整数num是否大于0
*
* @param num
* @return
* @author jiqinlin
*/
public final static boolean isIntGtZero(int num){
return num>0;
} /**
* 判断整数num是否大于或等于0
*
* @param num
* @return
* @author jiqinlin
*/
public final static boolean isIntGteZero(int num){
return num>=0;
} /**
* 判断浮点数num是否等于0
*
* @param num 浮点数
* @return
* @author jiqinlin
*/
public final static boolean isFloatEqZero(float num){
return num==0f;
} /**
* 判断浮点数num是否大于0
*
* @param num 浮点数
* @return
* @author jiqinlin
*/
public final static boolean isFloatGtZero(float num){
return num>0f;
} /**
* 判断浮点数num是否大于或等于0
*
* @param num 浮点数
* @return
* @author jiqinlin
*/
public final static boolean isFloatGteZero(float num){
return num>=0f;
} /**
* 判断是否为合法字符(a-zA-Z0-9-_)
*
* @param text
* @return
* @author jiqinlin
*/
public final static boolean isRightfulString(String text){
return match(text, "^[A-Za-z0-9_-]+$");
} /**
* 判断英文字符(a-zA-Z)
*
* @param text
* @return
* @author jiqinlin
*/
public final static boolean isEnglish(String text){
return match(text, "^[A-Za-z]+$");
} /**
* 判断中文字符(包括汉字和符号)
*
* @param text
* @return
* @author jiqinlin
*/
public final static boolean isChineseChar(String text){
return match(text, "^[\u0391-\uFFE5]+$");
} /**
* 匹配汉字
*
* @param text
* @return
* @author jiqinlin
*/
public final static boolean isChinese(String text){
return match(text, "^[\u4e00-\u9fa5]+$");
} /**
* 是否包含中英文特殊字符,除英文"-_"字符外
*
* @param str
* @return
*/
public static boolean isContainsSpecialChar(String text) {
if(StringUtils.isBlank(text)) return false;
String[] chars={"[","`","~","!","@","#","$","%","^","&","*","(",")","+","=","|","{","}","'",
":",";","'",",","[","]",".","<",">","/","?","~","!","@","#","¥","%","…","&","*","(",")",
"—","+","|","{","}","【","】","‘",";",":","”","“","’","。",",","、","?","]"};
for(String ch : chars){
if(text.contains(ch)) return true;
}
return false;
} /**
* 过滤中英文特殊字符,除英文"-_"字符外
*
* @param text
* @return
*/
public static String stringFilter(String text) {
String regExpr="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Pattern p = Pattern.compile(regExpr);
Matcher m = p.matcher(text);
return m.replaceAll("").trim();
} /**
* 过滤html代码
*
* @param inputString 含html标签的字符串
* @return
*/
public static String htmlFilter(String inputString) {
String htmlStr = inputString; // 含html标签的字符串
String textStr = "";
java.util.regex.Pattern p_script;
java.util.regex.Matcher m_script;
java.util.regex.Pattern p_style;
java.util.regex.Matcher m_style;
java.util.regex.Pattern p_html;
java.util.regex.Matcher m_html;
java.util.regex.Pattern p_ba;
java.util.regex.Matcher m_ba; try {
String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>"; // 定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>
// }
String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>"; // 定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style>
// }
String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
String patternStr = "\\s+"; p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
m_script = p_script.matcher(htmlStr);
htmlStr = m_script.replaceAll(""); // 过滤script标签 p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
m_style = p_style.matcher(htmlStr);
htmlStr = m_style.replaceAll(""); // 过滤style标签 p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m_html = p_html.matcher(htmlStr);
htmlStr = m_html.replaceAll(""); // 过滤html标签 p_ba = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
m_ba = p_ba.matcher(htmlStr);
htmlStr = m_ba.replaceAll(""); // 过滤空格 textStr = htmlStr; } catch (Exception e) {
System.err.println("Html2Text: " + e.getMessage());
}
return textStr;// 返回文本字符串
} /**
* 正则表达式匹配
*
* @param text 待匹配的文本
* @param reg 正则表达式
* @return
* @author jiqinlin
*/
private final static boolean match(String text, String reg) {
if (StringUtils.isBlank(text) || StringUtils.isBlank(reg))
return false;
return Pattern.compile(reg).matcher(text).matches();
} // 参考地址:http://www.cnblogs.com/yansheng/archive/2010/05/07/1730188.html // 附 : 常用的正则表达式:
// 匹配特定数字:
// ^[1-9]d*$    //匹配正整数
// ^-[1-9]d*$   //匹配负整数
// ^-?[1-9]d*$   //匹配整数
// ^[1-9]d*|0$  //匹配非负整数(正整数 + 0)
// ^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)
// ^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数
// ^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数
// ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数
// ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)
// ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)
// 评注:处理大量数据时有用,具体应用时注意修正
//
// 匹配特定字符串:
// ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
// ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
// ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
// ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
// ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
//
// 在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
//
// 只能输入数字:“^[0-9]*$”
// 只能输入n位的数字:“^d{n}$”
// 只能输入至少n位数字:“^d{n,}$”
// 只能输入m-n位的数字:“^d{m,n}$”
// 只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
// 只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
// 只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
// 只能输入非零的正整数:“^+?[1-9][0-9]*$”
// 只能输入非零的负整数:“^-[1-9][0-9]*$”
// 只能输入长度为3的字符:“^.{3}$”
// 只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”
// 只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”
// 只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”
// 只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”
// 只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”
// 验证用户密码:“^[a-zA-Z]\\w{5,17}$”正确格式为:以字母开头,长度在6-18之间,
//
// 只能包含字符、数字和下划线。
// 验证是否含有^%&’,;=?$”等字符:“[^%&’,;=?$x22]+”
// 只能输入汉字:“^[u4e00-u9fa5],{0,}$”
// 验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
// 验证InternetURL:“^http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$”
// 验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”
//
// 正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,
//
// “XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。
// 验证身份证号(15位或18位数字):“^d{15}|d{}18$”
// 验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”
// 验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$” 正确格式为:“01”“09”和“1”“31”。
//
// 匹配中文字符的正则表达式: [u4e00-u9fa5]
// 匹配双字节字符(包括汉字在内):[^x00-xff]
// 匹配空行的正则表达式:n[s| ]*r
// 匹配HTML标记的正则表达式:/< (.*)>.*|< (.*) />/
// 匹配首尾空格的正则表达式:(^s*)|(s*$)
// 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
// 匹配网址URL的正则表达式:^http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$
}

(转)

java最全的验证类封装的更多相关文章

  1. Java IO 流--FileUtils 工具类封装

    IO流的操作写多了,会发现都已一样的套路,为了使用方便我们可以模拟commosIo 封装一下自己的FileUtils 工具类: 1.封装文件拷贝: 文件拷贝需要输入输出流对接,通过输入流读取数据,然后 ...

  2. 编写Java程序,编写自定义异常类封装将棋子落在格子中已有棋子的异常

    返回本章节 返回作业目录 需求说明: 完善控制台版五子棋,判断用户所下棋子的位置,是否已经存在棋子,如果已经存在,则抛出用户自定义异常,提示用户该位置已经有棋子. 实现思路: 创建用户自定义异常类Go ...

  3. C# 正则表达式 最全的验证类

    ///<summary> ///验证输入的数据是不是正整数 ///</summary> ///<param name="str">传入字符串&l ...

  4. java工具类(二)之java正则表达式表单验证

    java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...

  5. 最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!

    转载自:https://github.com/whvcse/RedisUtil 代码 ProtoStuffSerializerUtil.java import java.io.ByteArrayInp ...

  6. java最全时间类及用法

    对于时间类,这篇主要说明各种现实情况下如何取值,怎么定向取值,得到自己想要的时间参数.在java中时间类主要有Date.Calendar,暂时只介绍 java.util.*下的时间类,对于java.s ...

  7. Redis操作Set工具类封装,Java Redis Set命令封装

    Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...

  8. Redis操作List工具类封装,Java Redis List命令封装

    Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...

  9. java中基于TaskEngine类封装实现定时任务

    主要包括如下几个类: 文章标题:java中基于TaskEngine类封装实现定时任务 文章地址: http://blog.csdn.net/5iasp/article/details/10950529 ...

随机推荐

  1. 从头开始搭建一个dubbo+zookeeper平台

    本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用. 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后 ...

  2. C# Winform 窗体美化

    using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using Sys ...

  3. 【转】SVN提示:由于目标机器积极拒绝,无法连接 的解决方法

    转载地址:http://wxiaolei.blog.163.com/blog/static/1038760120133108180596/ 安装完TSVN之后,checkout时报错,并且后来在cmd ...

  4. discuz清空session,导致session保存机制失败,session无法更新与解决

    <?php function userErrorHandler() { $e = func_get_args(); echo '<pre style="color:red;&qu ...

  5. ACM-ICPC2018南京赛区 Mediocre String Problem

    Mediocre String Problem 题解: 很容易想到将第一个串反过来,然后对于s串的每个位置可以求出t的前缀和它匹配了多少个(EXKMP 或者 二分+hash). 然后剩下的就是要处理以 ...

  6. Msys2的安装,并整合到cmder中

    下载:msys2-x86_64-20161025.exe 下载安装包,然后装上. 打开msys的shell之后首先升级一下pacman,然后就可以愉快地Syu了. $ pacman -Sy pacma ...

  7. transition多个属性同时渐变(width,height,background)

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    < ...

  8. 一次线上bug引起的反思

    今天线上又出现了一个bug,而且代码是我写的.之前这个问题也出现过,不过由于每次情况都不同,改来改去总是改不完.之后领导知道后也很恼火,让测试把每种情况都测试了下,而我也又一次重新检查了下代码.当时确 ...

  9. IIS 7 启用 gzip 静态压缩 压缩js和css文件

    搞了很久,不如nginx好弄,不知道怎么修改压缩比,也不知道怎么压缩的规则是啥(管理器上没有写),不过反正出来了,一个js文件900多K变成了100多K 1.在web.config文件里面加上: &l ...

  10. Linux Shell 编程 文件转置问题

    给定一个文件 file.txt,转置它的内容. 你可以假设每行列数相同,并且每个字段由 ' ' 分隔. 示例: 假设 file.txt 文件内容如下: name age alice 21 ryan 3 ...