package simple.base.utils.validate; import java.util.regex.Matcher; import java.util.regex.Pattern; import simple.base.utils.IdCardSimple; /** * 校验类公共方法 * * @author __ 2014-1-15 */ public class ValidateSimple { /********************************* 经常使用正则表达式代码 ********************/ /** * 经常使用正则表达式代码提供 验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ * 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ * 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ * 验证非零的正整数:^\+?[1-9][0-9]*$ 验证非零的负整数:^\-[1-9][0-9]*$ 验证非负整数(正整数 + 0) ^\d+$ * 验证非正整数(负整数 + 0) ^((-\d+)|(0+))$ 验证长度为3的字符:^.{3}$ * 验证由26个英文字母组成的字符串:^[A-Za-z]+$ 验证由26个大写英文字母组成的字符串:^[A-Z]+$ * 验证由26个小写英文字母组成的字符串:^[a-z]+$ 验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$ * 验证由数字、26个英文字母或者下划线组成的字符串:^\w+$ 验证用户密码:^[a-zA-Z]\w{5,17}$ * 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。 验证是否含有 ^%&',;=?$\" * 等字符:[^%&',;=?$\x22]+ 验证汉字:^[\u4E00-\u9FA5\uF900-\uFA2D]+$ * 验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ * 验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ * ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$ * 验证手机号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX- * XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。 * 验证身份证号(15位或18位数字):^\d{15}|\d{}18$ 验证一年的12个月:^(0?[1-9]|1[0-2])$ * 正确格式为:“01”-“09”和“1”“12” 验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ * 正确格式为:0一、09和一、31。 整数:^-?\d+$ 非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$ 正浮点数 * ^(([0-9]+\ * .[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ * 非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 负浮点数 * ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ 浮点数 * ^(-?\d+)(\.\d+)?$ */ /** * /** 功能:校验是否为手机号码 * * @param Mobile * 手机号码 * @return boolean 校验结果 */ public static boolean checkMobile(String Mobile) { String regExp = "^(1[3|5|8][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])$"; Pattern p = Pattern.compile(regExp); Matcher m = p.matcher(Mobile); return m.find();// boolean } /** * 功能:判断字符串是否为日期格式 * * @param strDate * 须要校验的字符串 * @return boolean 校验结果 */ public static boolean checkDate(String strDate) { Pattern pattern = Pattern .compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$"); Matcher m = pattern.matcher(strDate); if (m.matches()) { return true; } else { return false; } } /** * 功能:身份证校验 * * @param str * 须要校验的字符串 * @return boolean 校验结果 */ public static boolean checkIDCard(String str) { return IdCardSimple.getInstance().verify(str); } /** * 功能:验证邮箱地址是否正确 * * @param email * 须要校验的字符串 * @return boolean 校验结果 */ public static boolean checkEmail(String email) { boolean flag = false; try { String check = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; Pattern regex = Pattern.compile(check); Matcher matcher = regex.matcher(email); flag = matcher.matches(); } catch (Exception e) { flag = false; } return flag; } /** * 功能:验证是否全为中文 * * @param str * 须要校验的字符串 * @return boolean 校验结果 */ public static boolean checkChinese(String str) { boolean result = true; for (int i = 0; i < str.length(); i++) { String temp = str.substring(i, i + 1); boolean tempRes = java.util.regex.Pattern.matches("[\u4E00-\u9FA5]", temp); if (!tempRes) { result = false; break; } } return result; } /** * 功能:验证对象是否为null * * @param obj * 须要校验的对象 * @return boolean 校验结果 */ public static boolean checkIsNull(Object obj) { return obj == null; } /** * 判断是否全为数字 * @param inputStr * @return */ public static boolean isAllNumeric(String inputStr){ return inputStr==null?false: inputStr.matches("\\d+"); } /** * 判断是否全为字母 * @param inputStr * @return */ public static boolean isAllLetter(String inputStr){ return inputStr==null?false: inputStr.matches("[A-Za-z]+"); } /** * 正则表达式判断字符串是否全是中文汉字 * * @param strInput * @return */ public static boolean isAllChinese(String strInput) { if (strInput != null && !strInput.trim().equalsIgnoreCase("")) { // 此正则表达式用来判断是否为中文(\\u4E00-\\u9FA5\\uF900-\\uFA2D是指汉字的Unicode编码范围 ) Pattern pattern = Pattern.compile("[\u4E00-\u9FA5\uF900-\uFA2D]+"); Matcher matcher = pattern.matcher(strInput); if (matcher.matches()) { return true; } else { return false; } } else { return false; } } /** * 正则表达式判断字符串是否含有中文汉字 * * @param strInput * @return */ public static boolean isHaveChinese(String strInput) { if (strInput != null && !strInput.trim().equalsIgnoreCase("")) { for (int i = 0; i < strInput.length(); i++) { char ss = strInput.charAt(i); boolean s = String.valueOf(ss).matches("[\u4E00-\u9FA5\uF900-\uFA2D]"); if (s) { return true; } } return false; } else { return false; } } /** * 正则表达式判断字符串是否知足中文、大小写字母、数字、下划线和长度限制 * * @param strInput * 字符串 * @param intMax * 字符串的设定长度 * @return */ public static boolean isStringOK(String strInput, int intMax) { /** 此正则表达式将上面两者结合起来进行判断,中文、大小写字母和数字,{2,10}字符的长度为2-10 **/ if (strInput != null && !strInput.trim().equalsIgnoreCase("")) { String Regular = "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D\\w]{2," + intMax + "}$"; Pattern pattern = Pattern.compile(Regular, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(strInput); if (matcher.matches()) { return true; } else { return false; } } else { return false; } } }