`

java 验证类

阅读更多
 
package cc.cococ.trade.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

 
public class FormatValidate
{

	// 保存每个月的天数
	private static final int[] DAYS_OF_MONTH = { 31, 28, 31, 30, 31, 30, 31,
			31, 30, 31, 30, 31 };

	// 日历的起始年份
	public static final int START_YEAR = 1900;

	// 日历的结束年份
	public static final int END_YEAR = 2100;

	private static final String ZERO_STRING = "0";

	/***************************************************************************
	 * 匹配英文字母 或者汉字 如"Shenzhen" "深圳"
	 * 
	 * @param str 待匹配字符串
	 * @return true 匹配通过 false 匹配失败
	 */
	public static boolean isValidEnglishOrChinese(String str)
	{
		// 1、[A-Za-z]* 英文字母的匹配 一次或者多次
		// 2、[\u4E00-\u9FA5]* 汉字匹配 一次或者多次
		boolean flag = false;
		Pattern p = Pattern.compile("^[A-Za-z]*|[\u4E00-\u9FA5]*$");
		if (str != null)
		{
			Matcher match = p.matcher(str);
			flag = match.matches();
		}
		return flag;
	}

	/***************************************************************************
	 * 匹配英中文姓名 与英文名 英文名格式为:姓与名之间用/隔开 例如Green/Jim King
	 * 
	 * @param str 待匹配字符串
	 * @return true 匹配通过 false 匹配失败
	 */
	public static boolean isValidName(String str)
	{
		// 1、[A-Za-z]* 英文字母的匹配 一次或者多次
		// 2、[\u4E00-\u9FA5]* 汉字匹配 一次或者多次
		boolean flag = false;
		Pattern p = Pattern
				.compile("^([A-Za-z]+[\\/][A-Za-z]+)|[\u4E00-\u9FA5]*");
		if (str != null)
		{
			Matcher match = p.matcher(str);
			flag = match.matches();
		}
		return flag;
	}

	/***************************************************************************
	 * 验证身份证号码 15位 18位
	 * 
	 * @param cardStr 身份证字符串
	 * @return true 合法 false 不合法
	 */
	public static boolean isValidIdCard(String cardStr)
	{
		boolean flag = false;
		Pattern pEighteen = Pattern.compile("^\\d{17}(\\d{1}|x)$");// 18位身份证号码
		// 包括末尾是“x”的校验码
		Pattern pFifteen = Pattern.compile("^\\d{15}$");// 15位身份证号码
		if (cardStr != null)
		{
			if (pEighteen.matcher(cardStr).matches()) // 18位身份证号码验证通过
			{
				if (isValidDate(cardStr.substring(6, 14)))// 18位身份证号码
				// 出生年月日验证通过
				{
					flag = true;
				}
			}
			if (pFifteen.matcher(cardStr).matches()) // 15位身份证号码验证通过
			{
				if (isValidDay(cardStr.substring(6, 12))) // 15位身份证出身年月日的验证
				{
					flag = true;
				}
			}
		}
		return flag;

	}

	/***************************************************************************
	 * 正整数验证
	 * 
	 * @param str 待验证字符串
	 * @return true 验证通过 false 验证失败
	 */
	public static boolean isValidInteger(String str)
	{
		boolean flag = false;
		Pattern p = Pattern.compile("^\\d*$");
		if (str != null)
		{
			Matcher match = p.matcher(str);
			flag = match.matches();
		}
		return flag;
	}

	/***************************************************************************
	 * 整数验证(包括正整数与 负整数)
	 * 
	 * @param str 待验证字符串
	 * @return true 验证通过 false 验证失败
	 */
	public static boolean isValidNo(String str)
	{
		boolean flag = false;
		Pattern p = Pattern.compile("^-?\\d*$");
		if (str != null)
		{
			Matcher match = p.matcher(str);
			flag = match.matches();
		}
		return flag;
	}

	/**
	 *  验证非负整数(正整数+0)
	 * 
	 * @param str 待验证字符串
	 * @return true 验证通过 false 验证失败
	 */
	public static boolean isValidNonNegative(String str)
	{
		boolean flag = false;
		Pattern p = Pattern.compile("^\\d+$");
		if (str != null)
		{
			Matcher match = p.matcher(str);
			flag = match.matches();
		}
		return flag;
	}

	/**
	 * 验证非负整数(正整数+0)
	 * 
	 * @param str 待验证字符串
	 * @return true 验证通过 false 验证失败
	 */
	public static boolean isValidPositiveInteger(String str)
	{
		boolean flag = false;
		Pattern p = Pattern.compile("^\\d+$");
		if (str != null)
		{
			Matcher match = p.matcher(str);
			flag = match.matches();
			if(ZERO_STRING.equals(str))
			{
				flag = false;
			}	
		}
		
		return flag;
	}

	/***************************************************************************
	 * 匹配英文字母(汉语拼音)
	 * 
	 * @param str 待匹配字符串
	 * @return true 匹配通过 false 匹配失败
	 */
	public static boolean isValidEnglish(String str)
	{
		boolean flag = false;
		Pattern p = Pattern.compile("^[A-Za-z]*$");
		if (str != null)
		{
			Matcher match = p.matcher(str);
			flag = match.matches();
		}
		return flag;
	}

	/***************************************************************************
	 * 匹配英文字母 或者汉字,数字 过滤特殊字符
	 * 
	 * @param str 待匹配字符串
	 * @return true 匹配通过 false 匹配失败
	 */
	public static boolean isValidNonSpecialChar(String str)
	{
		boolean flag = false;
		Pattern p = Pattern.compile("^[A-Za-z\u4E00-\u9FA5\\d]*$");
		if (str != null)
		{
			Matcher match = p.matcher(str);
			flag = match.matches();
		}
		return flag;
	}

	/**
	 * 验证HH时间格式的时间范围是否大于等于三小时 **注意此方法必须在isValidHour格式验证通过后调用
	 * 
	 * @param startHour 开始时间 HH
	 * @param endHour 结束时间HH
	 * @return true 通过 false 不通过
	 */
	public static boolean isVaildHourZone(String startHour, String endHour)
	{
		boolean flag = false;
		if (startHour != null && endHour != null)
		{
			if (isValidHour(startHour) && isValidHour(endHour)) // 格式验证,避免可能抛类型转换异常
			{
				int sHour = Integer.parseInt(startHour);
				int eHour = Integer.parseInt(endHour);
				flag = (eHour - sHour >= 3);
			}
		}
		return flag;

	}

	/***************************************************************************
	 * 验证结束时间是否大于开始时间 **注意:此方法必须先调用isValidDate 方法后调用 yyMMdd
	 * 
	 * @param startDate 开始时间
	 * @param endDate 结束时间
	 * @return true 验证通过 false 验证失败
	 */
	public static boolean isValidTimeZone(String startDate, String endDate)
	{
		boolean flag = false;
		if (startDate != null && endDate != null)
		{
			if (isValidDate(startDate) && isValidDate(endDate)) // 格式验证,避免可能抛类型转换异常
			{
				flag = (Integer.parseInt(endDate) > Integer.parseInt(startDate));
			}
		}
		return flag;
	}

	/***************************************************************************
	 * 验证结束时间是否大于等于开始时间 **注意:此方法必须先调用isValidDate 方法后调用 yyMMdd(包含等于)
	 * 
	 * @param startDate 开始时间
	 * @param endDate 结束时间
	 * @return true 验证通过 false 验证失败
	 */
	public static boolean isValidTwoTimes(String startDate, String endDate)
	{
		boolean flag = false;
		if (startDate != null && endDate != null)
		{
			if (isValidDate(startDate) && isValidDate(endDate)) // 格式验证,避免可能抛类型转换异常
			{
				flag = (Integer.parseInt(endDate) > Integer.parseInt(startDate) || Integer
						.parseInt(endDate) == Integer.parseInt(startDate));
			}
		}
		return flag;
	}

	/***************************************************************************
	 * 验证电话号码 后可接分机号 区号3位或者4位 电话7位或者8位后 后面可加3位或者4位分机号
	 * 
	 * @param telephoeNo 电话号码字符串
	 * @return
	 */
	public static boolean isValidTelephoeNo(String telephoeNo)
	{
		// 1、\\d{3,4} 区号 3位或者4位的匹配
		// 2、\\d{7,8} 号码 7味或者8位的匹配
		// 3、(\\d{3,4})? 分机号3位或者4位的匹配 ?可匹配一次或者两次
		boolean flag = false;
		Pattern p = Pattern.compile("^\\d{3,4}\\d{7,8}(\\d{3,4})?$");
		Matcher match = p.matcher(telephoeNo);
		if (telephoeNo != null)
		{
			flag = match.matches();
		}
		return flag;
	}

	/***************************************************************************
	 * 验证手机号码
	 * 
	 * @param telNo 电话号码字符串 130到139 和 150,152 ,157,158,159 ,186,189,187
	 * @return
	 */
	public static boolean isValidMobileNo(String mobileNo)
	{
		// 1、(13[0-9])|(15[02789])|(18[679]) 13段 或者15段 18段的匹配
		// 2、\\d{8} 整数出现8次
		boolean flag = false;
		// Pattern p = Pattern.compile("^(1[358][13567890])(\\d{8})$");
		Pattern p = Pattern
				.compile("^((13[0-9])|(15[02789])|(18[679]))\\d{8}$");
		Matcher match = p.matcher(mobileNo);
		if (mobileNo != null)
		{
			flag = match.matches();
		}
		return flag;
	}

	/***************************************************************************
	 * 验证是否是正确的邮箱格式
	 * 
	 * @param email
	 * @return true表示是正确的邮箱格式,false表示不是正确邮箱格式
	 */
	public static boolean isValidEmail(String email)
	{
		// 1、\\w+表示@之前至少要输入一个匹配字母或数字或下划线 \\w 单词字符:[a-zA-Z_0-9]
		// 2、(\\w+\\.)表示域名. 如新浪邮箱域名是sina.com.cn
		// {1,3}表示可以出现一次或两次或者三次.
		String reg = "\\w+@(\\w+\\.){1,3}\\w+";
		Pattern pattern = Pattern.compile(reg);
		boolean flag = false;
		if (email != null)
		{
			Matcher matcher = pattern.matcher(email);
			flag = matcher.matches();
		}
		return flag;
	}

	/***************************************************************************
	 * 验证整点时间格式是否正确 HH格式 时间范围00时~23时
	 * 
	 * @param hour 时间格式字符串
	 * @return true表示是正确的整点时间格式,false表示不是正确整点时间格式
	 */
	public static boolean isValidHour(String hour)
	{
		boolean flag = false;
		String reg = "^[0-2][0-9]$";
		Pattern pattern = Pattern.compile(reg);
		if (hour != null)
		{
			Matcher matcher = pattern.matcher(hour);
			flag = matcher.matches();
			int firstNum = Integer.parseInt(hour.substring(0, 1));
			if (flag && firstNum == 2)
			{
				int secondNum = Integer.parseInt(hour.substring(1, 2));
				flag = secondNum < 4; // 时间小于24时
			}
		}
		return flag;
	}

	/***************************************************************************
	 * 匹配日期格式 yyMMdd 并验证日期是否合法 此方法忽略了闰年的验证 用于15位身份证出生日期的验证
	 * 
	 * @param dayStr 日期字符串
	 * @return true 日期合法 false 日期非法
	 */
	public static boolean isValidDay(String dayStr)
	{
		Pattern p = Pattern.compile("^\\d{2}\\d{2}\\d{2}$");
		Matcher match = p.matcher(dayStr);
		if (dayStr != null)
		{
			if (match.matches()) // 格式验证通过 yyMMdd
			{
				int month = Integer.parseInt(dayStr.substring(2, 4)); // 月
				int day = Integer.parseInt(dayStr.substring(4, 6)); // 日
				if (!isValidMonth(month))
				{
					return false; // 月份不合法
				}
				if (!(day >= 1 && day <= DAYS_OF_MONTH[month - 1]))
				{
					return false; // 日期不合法
				}
				return true;
			}

			return false;
		}
		else
		{
			return false;
		}
	}

	/***************************************************************************
	 * 匹配日期格式 yyyyMMdd 并验证日期是否合法
	 * 
	 * @param date 日期字符串
	 * @return true 日期合法 false 日期非法
	 */
	public static boolean isValidDate(String date)
	{
		// 1、 \\d{4} 年,\\d{2}月,\\d{2}日匹配
		Pattern p = Pattern.compile("^\\d{4}\\d{2}\\d{2}$");
		Matcher match = p.matcher(date);
		if (date != null)
		{
			if (match.matches()) // 格式验证通过 yyyyMMdd
			{
				int year = Integer.parseInt(date.substring(0, 4)); // 年
				int month = Integer.parseInt(date.substring(4, 6)); // 月
				int day = Integer.parseInt(date.substring(6, 8)); // 日
				if (!isValidYear((year)))
				{
					return false; // 年份不在有效年份中
				}
				if (!isValidMonth(month))
				{
					return false; // 月份不合法
				}
				if (!isValidDay(year, month, day))
				{
					return false; // 日期不合法
				}
				return true;
			}

			return false;
		}
		else
		{
			return false;
		}
		// return Pattern.matches("", date);
	}

	/**
	 * 检查year是否在有效的年份范围内 此处验证大于1900年 小于2101年
	 * 
	 * @param year
	 * @return
	 */
	public static boolean isValidYear(int year)
	{
		return year >= START_YEAR && year <= END_YEAR;
	}

	/**
	 * 验证月份是否在有效月份内
	 * 
	 * @param month
	 * @return
	 */
	public static boolean isValidMonth(int month)
	{
		return month >= 1 && month <= 12;
	}

	/**
	 * 检查天数是否在有效的范围内,因为天数会根据年份和月份的不同而不同 所以必须依赖年份和月份进行检查
	 * 
	 * @param year
	 * @param month
	 * @param day
	 * @return
	 */
	public static boolean isValidDay(int year, int month, int day)
	{
		if (month == 2 && isLeapYear(year))// 闰年且是2月份
		{
			return day >= 1 && day <= 29;
		}
		return day >= 1 && day <= DAYS_OF_MONTH[month - 1];// 其他月份
	}

	/**
	 * 验证是否是闰年
	 * 
	 * @param year
	 * @return
	 */
	public static boolean isLeapYear(int year)
	{
		return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
	}

	/**
	 * 验证用户名注册是否合法-----------由数字、26个英文字母或者下划线组成的字符串
	 * 
	 * @param userName
	 * @return
	 */
	public static boolean isRegUserName(String userName)
	{

		String str = "^\\w+$";
		boolean flag = true;
		if (userName != null)
		{
			Pattern p = Pattern.compile(str);
			Matcher match = p.matcher(userName);
			flag = match.matches();
		}
		return flag;
	}

}

分享到:
评论

相关推荐

    java验证工具类

    在这个Java开发的验证码工具类中,它提供了生成和验证验证码的功能,同时包含了文档说明和Spring MVC框架的集成示例。 验证码(CAPTCHA)的基本原理是生成一段随机的字符串或图像,用户需要正确输入才能完成相应的...

    一个 Java 验证 的工具类

    一个 Java 验证 的工具类 支持各种类型的验证 在项目中大量使用

    史上最全Java表单验证封装类

    综上所述,“史上最全Java表单验证封装类”为开发者提供了丰富的工具集,使得在Java项目中进行表单验证变得更加简单高效。通过这些方法的应用,可以有效提升应用程序的安全性和用户体验。希望本文能帮助大家更好地...

    JAVA简易网络验证可对接火山/易语言实现网络验证

    4. **火山/易语言接口**:这部分是项目的核心,它提供了一种方式让火山或易语言的应用能够与Java验证服务无缝对接。这可能包括定义接口规范,以及在易语言或火山中调用Java代码的桥接机制,如JNI(Java Native ...

    java验证文件真实格式和编码格式工具类

    `java验证文件真实格式和编码格式工具类` 提供的功能对于处理不同来源的文件至关重要,尤其是在处理用户上传的文件或跨平台数据交换时。通过`VerifyFileType.java` 和 `VerifyFileEncoder.java`,开发者可以确保正确...

    JAVA类验证URL

    ### JAVA类验证URL知识点 #### 一、概述 在Java开发过程中,经常需要验证一个URL是否可用或可访问。这通常涉及到网络请求以及状态码的处理。本文将详细介绍`URLAvailability.java`类的设计思路与实现细节,该类...

    使用java实现email验证

    在Java Web开发中,电子邮件验证是一项常见的功能,...这个过程在JavaWebEmail压缩包文件中可能会包含相关的Java类、配置文件以及可能的测试代码。通过学习和理解这些代码,开发者可以更好地理解和实现邮件验证功能。

    JAVA短信验证源码DEMO

    2. **Socket编程**:在Java中,Socket编程涉及到`java.net.Socket`和`java.net.ServerSocket`类。客户端使用`Socket`创建到服务器的连接,然后通过`Socket.getOutputStream()`和`getInputStream()`方法进行数据的...

    java 验证统一社会信用代码

    java ,验证统一社会信用代码

    java图片滑动验证(登录验证)原理与实现方法详解

    Java图片滑动验证(登录验证)原理与实现方法详解 Java图片滑动验证(登录验证)是一种常用的身份验证机制,它可以有效地防止机器人和恶意攻击。下面将详细介绍Java图片滑动验证(登录验证)的原理和实现方法。 ...

    java 自定义注解验证

    Java 自定义注解验证是Java开发中的一个重要特性,它允许开发者创建自己的元数据,以便在编译时或运行时对代码进行验证和处理。自定义注解为代码提供了额外的信息,使得程序更具可读性、可维护性和灵活性。在本案例...

    基于java反射的验证框架

    在本话题中,我们将深入探讨基于Java反射的验证框架,了解其工作原理、应用场景以及如何利用它来提升软件开发的效率和灵活性。 一、Java反射基础 Java反射机制是在运行时分析类的能力,包括获取类的信息(如类名、...

    30个java工具类

    [工具类] 中文验证.jsp.txt [工具类] 日期DateUtil.java [工具类] 文件FileUtil.java [工具类] 通信客户端simpleClient.java [工具类] 通信服务端simpleServer.java [工具类] 框架StringUtil.java [工具类] 时间Time...

    java中验证脚本组件

    在压缩包文件"12_验证脚本"中,可能包含了Java验证脚本的示例代码、配置文件或相关文档。通过研究这些内容,我们可以更深入地理解如何在实际项目中实施和定制验证脚本组件,以适应各种复杂的业务场景。为了进一步...

    java验证字符串是否符合json格式

    在Java编程中,验证字符串是否符合JSON(JavaScript Object Notation)格式是一项常见的任务,尤其是在进行前后端数据交互时。JSON是一种轻量级的数据交换格式,它允许数据以键值对的形式存储,易于人阅读和编写,...

    java使用google身份验证器实现动态口令验证的示例

    "java 使用 Google 身份验证器实现动态口令验证的示例" 本篇文章主要介绍了使用 Java 语言实现 Google 身份验证器来实现动态口令验证的示例代码。Google 身份验证器是一种基于时间的单次密码(TOTP)算法,能够生成...

    java验证AD域用户登录

    Java验证AD域用户登录是企业级应用中常见的一种身份验证方式,主要用于确保只有授权的用户才能访问特定的系统或服务。AD(Active Directory)域是由微软Windows Server操作系统提供的目录服务,用于集中管理用户账户...

    【强2】30个java工具类

    [工具类] 中文验证.jsp.txt [工具类] 日期DateUtil.java [工具类] 文件FileUtil.java [工具类] 通信客户端simpleClient.java [工具类] 通信服务端simpleServer.java [工具类] 框架StringUtil.java [工具类] 时间Time...

    java token验证和注解方式放行

    "java token验证和注解方式放行"的主题涉及了两个关键概念:Token验证和基于注解的权限管理。Token通常用于验证用户身份,防止未授权的访问。下面我们将深入探讨这两个主题。 首先,Token验证是一种常见的身份验证...

    正则表达式 Java 验证工具

    正则表达式 Java 验证工具正则表达式 Java 验证工具

Global site tag (gtag.js) - Google Analytics