- 浏览: 127679 次
- 性别:
- 来自: 福建
文章分类
- 全部博客 (105)
- 数据库 (4)
- hibernate (4)
- css3 (2)
- 前端设计 (13)
- struts (6)
- HTML5 (1)
- jQuery (16)
- JDBC (3)
- spring (6)
- 娱乐 (1)
- MyEclipse (2)
- oracle (4)
- javascript (10)
- ibatis (2)
- log4j (1)
- css (16)
- java (13)
- IText (1)
- IDE (1)
- C3P0 (1)
- ssi (1)
- IO (1)
- jsp (1)
- JSTL (1)
- JXL (1)
- ssh (1)
- ajax (2)
- struts2 (1)
- html (1)
- 正则表达式 (1)
- 非技术 (1)
- Properties (1)
- Tomcat (1)
- 电大 (0)
- test (0)
最新评论
-
yejq:
收藏~~
使用 Ctrl + Enter 提交表单
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日期格式化工具类
2013-12-24 17:26 1795\ /** * 日期工具类 * 默认使用 &quo ... -
Java文件操作详解
2012-07-02 15:38 920Java文件操作详解 ... -
从web.xml中获取我们需要的参数
2012-05-25 17:37 2185从web.xml中获取我们需要的参数【转载】 1、在w ... -
调用Oracle中的存储过程
2012-04-10 15:30 652调用Oracle中的存储过程 /** 首先在数 ... -
封装了StringUtil
2012-04-10 15:24 795封装了StringUtil /** * al ... -
封装了DateUtil方法
2012-04-10 15:19 1252封装了DateUtil方法 /** * all r ... -
Java读取Properties文件的六种方法
2012-03-26 17:22 1465Java读取Properties文件的六种方法【转载】 ... -
Java的身份证号码工具类
2012-04-24 11:23 839Java的身份证号码工具类 ... -
最简洁的九九乘法表代码
2012-04-24 11:23 1399package common; public cl ... -
FileUtil
2012-03-22 09:21 854package com.koubei.util; ... -
Java实现的ZIP解压缩工具类
2012-03-22 09:19 1182Java实现的ZIP解压缩工具类 package c ... -
POI 实现Excel 导入导出
2012-03-05 15:40 1356POI 实现Excel 导入导出【转载】 自己到apa ...
相关推荐
Java中获取文件路径的几种方式。 关于绝对路径和相对路径
jquery ajax验证用户名是否存在几种方式,包括text,json,xml
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...
Java中super的几种用法并与this的区别,有案例分析,可以拷贝到myeclipce中运行。
自己总结的6中单例模式的写法,也有测试类,可以试验下,自己稍微修改一下后,验证安全性,纯粹为学习,建议可提
主要介绍了Java使用正则表达式验证用户名和密码的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
主要介绍了Java正则验证IP的方法,结合实例形式对比分析了网上常见的几种针对IP的正则验证方法,最终给出了一个比较靠谱的IP正则验证表达式,需要的朋友可以参考下
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
15.java 中 IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和 Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21....
Java代码 publicenumColor{ RED,GREEN,BLANK,YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。 Java代码 enumSignal{ GREEN...