`

java的几种验证

    博客分类:
  • java
阅读更多

java的几种验证

package com.cn.wangk.util;

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

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

// 网站域名 联系电话 手机号码 邮政编码 邮箱
public class Validation {
	private static Logger logger = Logger.getLogger(Validation.class);
	/**
	 * 正则验证方法
	 * 
	 * @param regexstr
	 * @param str
	 * @return
	 */
	public static boolean Match(String regexstr, String str) {
		Pattern regex = Pattern.compile(regexstr,Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
		Matcher matcher = regex.matcher(str);
		return matcher.matches();
	}

	/**
	 * 邮箱验证
	 * 
	 * @param mail
	 * @return
	 */
	public static boolean MatchMail(String mail) {
		String mailregex = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
		return Match(mailregex, mail);
	}

	/**
	 * 手机验证
	 * 
	 * @param mobile
	 * @return
	 */
	public static boolean MatchMobile(String mobile) {
		String mobileregex = "^(13[4,5,6,7,8,9]|15[0,8,9,1,7]|188|187)\\d{8}$";
		return Match(mobileregex, mobile);
	}

	/**
	 * 电话验证
	 * 
	 * @param Tel
	 * @return
	 */
	public static boolean MatchTel(String Tel) {
		String telregex = "(^[0-9]{3,4}-[0-9]{7,8}-[0-9]{3,4}$)|(^[0-9]{3,4}-[0-9]{7,8}$)|(^[0-9]{7,8}-[0-9]{3,4}$)|(^[0-9]{7,15}$)";
		return Match(telregex, Tel);
	}

	public static boolean Webdomain(String webdomain) {
		String webdomainregex = "http://([^/]+)/*";
		return Match(webdomainregex, webdomain);
	}

	public static boolean ZipCode(String zipcode) {
		String zipcoderegex = "^[0-9]{6}$";
		return Match(zipcoderegex, zipcode);
	}

	public static boolean IdCardNo(String idcard) {
		HashMap<Integer, String> area = new HashMap<Integer, String>();
		area.put(11, "北京");
		area.put(12, "天津");
		area.put(13, "河北");
		area.put(14, "山西");
		area.put(15, "内蒙古");
		area.put(21, "辽宁");
		area.put(22, "吉林");
		area.put(23, "黑龙江");
		area.put(31, "上海");
		area.put(32, "江苏");
		area.put(33, "浙江");
		area.put(34, "安徽");
		area.put(35, "福建");
		area.put(36, "江西");
		area.put(37, "山东");
		area.put(41, "河南");
		area.put(42, "湖北");
		area.put(43, "湖南");
		area.put(44, "广东");
		area.put(45, "广西");
		area.put(46, "海南");
		area.put(50, "重庆");
		area.put(51, "四川");
		area.put(52, "贵州");
		area.put(53, "云南");
		area.put(54, "西藏");
		area.put(61, "陕西");
		area.put(62, "甘肃");
		area.put(63, "青海");
		area.put(64, "宁夏");
		area.put(65, "新疆");
		area.put(71, "台湾");
		area.put(81, "香港");
		area.put(82, "澳门");
		area.put(91, "国外");
		if(StringUtils.isBlank(idcard)) return false;
		logger.info("身份证所在地:"+area.get(Integer.parseInt(idcard.substring(0, 2))));
		if(area.get(Integer.parseInt(idcard.substring(0, 2)))==null) return false;
		if(!(idcard.length()==15||idcard.length()==18)) return false;
		if(idcard.length()==15){
			//老身份证
			int year = Integer.parseInt(idcard.substring(2,6))+1900;
			String ereg;
			if (year % 4 == 0||(year% 100 == 0 &&year % 4 == 0 )){
				ereg="^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$";//测试出生日期的合法性
			 }else{
				 ereg="^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$";//测试出生日期的合法性
			 }
			 if(Match(ereg, idcard)) 
				 return true;
			 else 
				 return false;
			 
		}else if(idcard.length()==18){
			//新省份证
			 //18位身份号码检测
			 //出生日期的合法性检查
			 //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
			 //平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
			int year = Integer.parseInt(idcard.substring(2,6))+1900;
			String ereg;
			 if (year % 4 == 0 ||(year % 100 == 0 && year%4 == 0 )){
				 ereg="^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$";//闰年出生日期的合法性正则表达式
			 }else{
				 ereg="^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$";//平年出生日期的合法性正则表达式
			 }
			 if(Match(ereg, idcard)){//测试出生日期的合法性
			 //计算校验位
				 int[] idcards = new int[18];
				 for (int i = 0; i < idcard.length(); i++) {
					idcards[i]=Integer.parseInt(idcard.substring(i, i+1));
				}
				 int S = (idcards[0] + idcards[10]) * 7
				 + (idcards[1] + idcards[11]) * 9
				 + (idcards[2] + idcards[12]) * 10
				 + (idcards[3] + idcards[13]) * 5
				 + (idcards[4] + idcards[14]) * 8
				 + (idcards[5] + idcards[15]) * 4
				 + (idcards[6] + idcards[16]) * 2
				 + idcards[7] * 1
				 + idcards[8] * 6
				 + idcards[9] * 3 ;
				 int Y = S % 11;
				 String M = "F";
				 String JYM = "10X98765432";
				 M = JYM.substring(Y,Y+1);//判断校验位
				 if(StringUtils.equalsIgnoreCase(M, String.valueOf(idcards[17])))
						 return true; //检测ID的校验位
				 else 
					 return false;
			 }
			 else 
				 return false;
		}
		return false;
	}

	public static void main(String[] args) {
		// 电子邮件
//		System.out.println(MatchMail("dffdfdf@qq.com"));
//		System.out.println(MatchMobile("13555655606"));
		//网上摘的几个身份证
		System.out.println(IdCardNo("420101198001300053"));
		System.out.println(IdCardNo("430911800709422")); 
		System.out.println(IdCardNo("430903198007094228"));

	}

}
 

分享到:
评论

相关推荐

    java 自定义注解验证

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

    java 银行卡 验证 正则表达式使用

    在Java编程语言中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换等操作。在"java 银行卡 验证 正则表达式使用"这个主题中,我们将深入探讨如何利用正则表达式进行银行卡、手机号码和邮箱以及URL地址的...

    java MD5验证

    接下来对其他几种散列类型(如SHA1、SHA-256等)进行了类似的测试。 ##### 3. 计算哈希值的方法 ```java public static String getHash(String fileName, String hashType) throws Exception { InputStream fis; ...

    java web图文验证程序

    Java Web 图文验证程序是一种常见的安全机制,用于防止自动化脚本或机器人对网站进行恶意操作,如批量注册、频繁登录尝试等。这类验证通常通过在用户提交表单前展示一个包含图片的验证码,图片上显示一串随机字符或...

    Java滑块验证,整理

    在Java开发中,滑块验证是一种常见的用户身份验证机制,用于防止自动化的机器人或恶意软件进行非法操作。这种验证方式通常包含一个可移动的滑块,用户需要将滑动的部分与另一部分匹配来完成验证。这里我们将深入探讨...

    java Tcp协议验证

    本文将详细探讨使用Java编程语言实现TCP协议验证的相关知识点,包括TCP的特性、可靠传输机制、丢包与错误处理,以及TCP校验和的计算。 首先,TCP是基于连接的协议,这意味着在数据传输之前,必须先建立一个连接。...

    Java后台验证框架

    本文将详细介绍一种基于Java的后台验证框架设计思路及其应用场景,旨在为开发者提供一种高效、可扩展且易于使用的验证方案。 #### 二、应用场景 在实际开发过程中,特别是在action或facade层,我们需要实现统一的...

    SRP6 java版本 密码验证

    在Java中实现SRP-6涉及几个关键步骤,包括初始化、身份验证和密钥协商。 1. **初始化**: 用户和服务器都需要生成一组参数,如模数N、生成器G以及一个安全的哈希函数H。这些参数通常在系统设置时预先计算好并分发给...

    Java实现浏览器CA证书的签名和验证

    数字签名是使用发送者的私钥对消息或文档进行加密的一种方式,接收者或其他人可以使用发送者的公钥来验证签名。这个过程确保了消息的完整性以及发送者的身份认证。 在实际应用中,数字证书常常与SSL/TLS协议结合...

    JAVA类验证URL

    ### JAVA类验证URL知识点 ...`URLAvailability`类提供了一种简单而实用的方式来验证URL的有效性,适用于多种场景下的URL有效性验证需求。通过对核心代码的深入分析,我们可以更好地理解其实现原理及应用场景。

    java对几种加密算法的实现

    以下是对几种常见加密算法在Java中的实现的详细阐述: 1. **对称加密**: - **DES(Data Encryption Standard)**:是一种古老的对称加密算法,使用56位密钥进行64位块加密。Java中的`javax.crypto.Cipher`类提供...

    java开发,短信,验证

    短信验证是当前许多网站及应用为确保用户信息安全、防止恶意注册而采用的一种验证方式。其核心流程是通过发送包含验证码的短信到用户的手机上,并由用户将接收到的验证码输入到指定位置进行验证。这种方式能够有效...

    java SUN的几种认证

    Java SUN的几种认证是针对Java开发者和系统管理员的专业资格证明,旨在验证个人在特定Java技术和Solaris操作系统领域的技能和知识。以下将详细解释这些认证及其重要性。 首先,Sun Certified JAVA Programmer (SCJP...

    java滑块验证功能和普通验证码功能代码

    在Java中实现验证码,你可以选择以下几种方法: 1. **生成随机字符**:创建一段随机的字符串,由字母、数字或其他符号组成,然后显示给用户。 2. **扭曲图像**:使用Java2D或其他图像处理库扭曲这个字符串,使得机器...

    基于java的登录验证系统(JSP)使用Sql数据库

    尽管本系统实现了基本的登录验证,但为了提高安全性,应考虑以下几点: 1. **密码加密**:用户密码不应以明文形式存储在数据库中,而是应当经过哈希和加盐处理。 2. **SQL注入防护**:在构建SQL查询时避免直接使用...

    java验证工具类

    Java验证码工具类是一种在Web应用中广泛使用的组件,主要用于用户身份验证,防止恶意自动化操作,如机器人注册、投票刷票等。在这个Java开发的验证码工具类中,它提供了生成和验证验证码的功能,同时包含了文档说明...

    javajsp实现了js验证表单

    JSP 是一种基于 Java 的服务器端技术,用于生成动态网页内容。JavaScript 被用来编写客户端脚本,以提高用户体验并减轻服务器负担。 #### 描述解读 描述部分提供了一个简单的 JSP 页面结构,其中包含一个 `...

    java常用几种加密算法

    ### Java常用几种加密算法 在Java开发中,数据的安全性是非常重要的一个方面,尤其是在网络通信、数据存储等场景下,合理的使用加密算法可以有效保护数据安全。本文将详细介绍几种常用的Java加密算法及其应用实例,...

    ntlm验证Java代码

    NTLM(NT LAN Manager)是一种身份验证协议,广泛用于Windows网络环境,特别是在与Microsoft Active Directory集成的环境中。在Java编程中,如果你需要访问一个只接受NTLM身份验证的Web服务或者资源,你就需要实现...

Global site tag (gtag.js) - Google Analytics