- 浏览: 132371 次
- 性别:
- 来自: 福建
文章分类
- 全部博客 (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 1856\ /** * 日期工具类 * 默认使用 &quo ... -
Java文件操作详解
2012-07-02 15:38 953Java文件操作详解 ... -
从web.xml中获取我们需要的参数
2012-05-25 17:37 2217从web.xml中获取我们需要的参数【转载】 1、在w ... -
调用Oracle中的存储过程
2012-04-10 15:30 686调用Oracle中的存储过程 /** 首先在数 ... -
封装了StringUtil
2012-04-10 15:24 833封装了StringUtil /** * al ... -
封装了DateUtil方法
2012-04-10 15:19 1294封装了DateUtil方法 /** * all r ... -
Java读取Properties文件的六种方法
2012-03-26 17:22 1511Java读取Properties文件的六种方法【转载】 ... -
Java的身份证号码工具类
2012-04-24 11:23 875Java的身份证号码工具类 ... -
最简洁的九九乘法表代码
2012-04-24 11:23 1451package common; public cl ... -
FileUtil
2012-03-22 09:21 885package com.koubei.util; ... -
Java实现的ZIP解压缩工具类
2012-03-22 09:19 1212Java实现的ZIP解压缩工具类 package c ... -
POI 实现Excel 导入导出
2012-03-05 15:40 1391POI 实现Excel 导入导出【转载】 自己到apa ...
相关推荐
Java 自定义注解验证是Java开发中的一个重要特性,它允许开发者创建自己的元数据,以便在编译时或运行时对代码进行验证和处理。自定义注解为代码提供了额外的信息,使得程序更具可读性、可维护性和灵活性。在本案例...
在Java编程语言中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换等操作。在"java 银行卡 验证 正则表达式使用"这个主题中,我们将深入探讨如何利用正则表达式进行银行卡、手机号码和邮箱以及URL地址的...
接下来对其他几种散列类型(如SHA1、SHA-256等)进行了类似的测试。 ##### 3. 计算哈希值的方法 ```java public static String getHash(String fileName, String hashType) throws Exception { InputStream fis; ...
Java Web 图文验证程序是一种常见的安全机制,用于防止自动化脚本或机器人对网站进行恶意操作,如批量注册、频繁登录尝试等。这类验证通常通过在用户提交表单前展示一个包含图片的验证码,图片上显示一串随机字符或...
在Java开发中,滑块验证是一种常见的用户身份验证机制,用于防止自动化的机器人或恶意软件进行非法操作。这种验证方式通常包含一个可移动的滑块,用户需要将滑动的部分与另一部分匹配来完成验证。这里我们将深入探讨...
本文将详细探讨使用Java编程语言实现TCP协议验证的相关知识点,包括TCP的特性、可靠传输机制、丢包与错误处理,以及TCP校验和的计算。 首先,TCP是基于连接的协议,这意味着在数据传输之前,必须先建立一个连接。...
本文将详细介绍一种基于Java的后台验证框架设计思路及其应用场景,旨在为开发者提供一种高效、可扩展且易于使用的验证方案。 #### 二、应用场景 在实际开发过程中,特别是在action或facade层,我们需要实现统一的...
在Java中实现SRP-6涉及几个关键步骤,包括初始化、身份验证和密钥协商。 1. **初始化**: 用户和服务器都需要生成一组参数,如模数N、生成器G以及一个安全的哈希函数H。这些参数通常在系统设置时预先计算好并分发给...
数字签名是使用发送者的私钥对消息或文档进行加密的一种方式,接收者或其他人可以使用发送者的公钥来验证签名。这个过程确保了消息的完整性以及发送者的身份认证。 在实际应用中,数字证书常常与SSL/TLS协议结合...
### JAVA类验证URL知识点 ...`URLAvailability`类提供了一种简单而实用的方式来验证URL的有效性,适用于多种场景下的URL有效性验证需求。通过对核心代码的深入分析,我们可以更好地理解其实现原理及应用场景。
以下是对几种常见加密算法在Java中的实现的详细阐述: 1. **对称加密**: - **DES(Data Encryption Standard)**:是一种古老的对称加密算法,使用56位密钥进行64位块加密。Java中的`javax.crypto.Cipher`类提供...
短信验证是当前许多网站及应用为确保用户信息安全、防止恶意注册而采用的一种验证方式。其核心流程是通过发送包含验证码的短信到用户的手机上,并由用户将接收到的验证码输入到指定位置进行验证。这种方式能够有效...
Java SUN的几种认证是针对Java开发者和系统管理员的专业资格证明,旨在验证个人在特定Java技术和Solaris操作系统领域的技能和知识。以下将详细解释这些认证及其重要性。 首先,Sun Certified JAVA Programmer (SCJP...
在Java中实现验证码,你可以选择以下几种方法: 1. **生成随机字符**:创建一段随机的字符串,由字母、数字或其他符号组成,然后显示给用户。 2. **扭曲图像**:使用Java2D或其他图像处理库扭曲这个字符串,使得机器...
尽管本系统实现了基本的登录验证,但为了提高安全性,应考虑以下几点: 1. **密码加密**:用户密码不应以明文形式存储在数据库中,而是应当经过哈希和加盐处理。 2. **SQL注入防护**:在构建SQL查询时避免直接使用...
Java验证码工具类是一种在Web应用中广泛使用的组件,主要用于用户身份验证,防止恶意自动化操作,如机器人注册、投票刷票等。在这个Java开发的验证码工具类中,它提供了生成和验证验证码的功能,同时包含了文档说明...
JSP 是一种基于 Java 的服务器端技术,用于生成动态网页内容。JavaScript 被用来编写客户端脚本,以提高用户体验并减轻服务器负担。 #### 描述解读 描述部分提供了一个简单的 JSP 页面结构,其中包含一个 `...
### Java常用几种加密算法 在Java开发中,数据的安全性是非常重要的一个方面,尤其是在网络通信、数据存储等场景下,合理的使用加密算法可以有效保护数据安全。本文将详细介绍几种常用的Java加密算法及其应用实例,...
NTLM(NT LAN Manager)是一种身份验证协议,广泛用于Windows网络环境,特别是在与Microsoft Active Directory集成的环境中。在Java编程中,如果你需要访问一个只接受NTLM身份验证的Web服务或者资源,你就需要实现...