首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

java 应验工具类

2012-08-26 
java 验证工具类package com.cn.wangk.utilimport java.util.HashMapimport java.util.regex.Matcherim

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"));}}

热点排行