/** * Copyright (c) 2010 北京数字政通科技股份有限公司 * 版权所有 * * 修改标识:赵冲20110506 * 修改描述:创建 */ package com.xjf.repository.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 正则验证相关操作的类. * * @version 0.1 20110506 * @author 赵冲 */ public class RegularExpression { public final static String DESC_NORMALTEXT = "不能包含特殊字符,且不能为空."; /** * 正则验证 * * @param toCheckStr 待验证的字符串 * @param patternStr 验证格式字符串 * @return 是否通过验证 */ public static boolean canMatch(String toCheckStr, String patternStr) { Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(toCheckStr); if(!matcher.matches()) { return false; } return true; } /** * 验证是否为整数. * * @param toCheckStr 待验证的字符串 * @return 是否通过验证 */ public static boolean isNumeric(String toCheckStr) { return canMatch(toCheckStr, "[0-9][0-9]*"); } /** * 验证是否为整数或字母. * * @param toCheckStr 待验证的字符串 * @return 是否通过验证 */ public static boolean isNumOrChar(String toCheckStr) { return canMatch(toCheckStr, "[a-zA-Z0-9][a-zA-Z0-9]*"); } /** * 验证是否为身份证号 * * @param toCheckStr 待验证的字符串 * @return 是否通过验证 */ public static boolean isIDCard(String toCheckStr) { // String patternStr = // "/^((1[1-5])|(2[1-3])|(3[0-7])|(4[1-6])|(5[0-4])|(6[0-9])|(7[12])|(8[0-9])|(9[0-9])|(10[0-9])|(11[0-1])|(12[0-9])|(13[0-3])|(14[0-9]))" // + "\\d{4}(" // + "(19\\d{2}(0[13-9]|1[012])(0[1-9]|[12]\\d|30))" // + "|(19\\d{2}(0[13578]|1[02])31)" // + "|(19\\d{2}02(0[1-9]|1\\d|2[0-8]))" // + "|(19([13579][26]|[2468][048]|0[48])0229)" // + ")\\d{3}(\\d|X|x)?$/"; // String patternStr1 = // "/^((1[1-5])|(2[1-3])|(3[0-7])|(4[1-6])|(5[0-4])|(6[0-9])|(7[0-9])|(8[0-9])|(9[0-1])|(10[0-9])|(11[0-3])|(12[0-9]))" // + "\\d{4}(" // + "(16\\d{2}(0[13-9]|1[012])(0[1-9]|[12]\\d|30))" // + "|(16\\d{2}(0[13578]|1[02])31)" // + "|(16\\d{2}02(0[1-9]|1\\d|2[0-8]))" // + "|(16([13579][26]|[2468][048]|0[48])0229)" // + ")\\d{3}(\\d|X|x)?$/"; String isIDCard1 = "^(([0-9]{14}[x0-9]{1})|([0-9]{17}[x0-9]{1}))$"; // String // isIDCard2="/^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{4}$/"; return canMatch(toCheckStr, isIDCard1);// || canMatch(toCheckStr, // isIDCard2); } /** * 验证是否为电话号码 * * @param toCheckStr 待验证的字符串 * @return 是否通过验证 */ public static boolean isTeleNo(String toCheckStr) { String patternStr = "(^[0-9]{3,4}\\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\\([0-9]{3,4}\\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)"; return canMatch(toCheckStr, patternStr); } /** * 验证是否为合法的用户名. 用户名只能由汉字、数字、字母、下划线组成,且不能为空. * * @param toCheckStr 待验证的字符串 * @return 是否通过验证 */ public static boolean isUserName(String toCheckStr) { String patternStr = "^[a-zA-Z0-9_\u4e00-\u9fa5]+$"; return canMatch(toCheckStr, patternStr); } /** * 验证是否为汉字. * * @param toCheckStr 待验证的字符串 * @return 是否通过验证 */ public static boolean isCH(String toCheckStr) { String patternStr = "^[\u4e00-\u9fa5]+$"; return canMatch(toCheckStr, patternStr); } /** * 验证是否为正常的文本内容. 内容只能为:汉字、数字、字母、下划线、 中文标点符号 * 英文标点符号,且不能为空. * * @param toCheckStr 待验证的字符串 * @return 是否通过验证 */ public static boolean isNormalText(String toCheckStr) { String patternStr = "^[a-zA-Z0-9_\u4e00-\u9fa5" // 汉字、数字、字母、下划线 // 中文标点符号(。 ; , : “ ”( ) 、 ! ? 《 》) + "\u3002\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff01\uff1f\u300a\u300b" // 英文标点符号(. ; , : ' ( ) / ! ? < >) + "\u002e\u003b\u002c\u003a\u0027\u0028\u0029\u002f\u0021\u003f\u003c\u003e\r\n" + "]+$"; return canMatch(toCheckStr, patternStr); } /** * 验证是否为Url的文本内容. 内容只能为:数字、字母、英文标点符号(. : / ),且不能为空. * * @param toCheckStr 待验证的字符串 * @return 是否通过验证 */ public static boolean isUrlText(String toCheckStr) { String patternStr = "^[a-zA-Z0-9" // 数字、字母 // 英文标点符号(. : /) + "\u002e\u003a\u002f" + "]+$"; return canMatch(toCheckStr, patternStr); } /** * 判断房间号是否符合规范:例如102,1202... 先判断3位或者4位的数字 * * @param roomNumber roomNumber * @return boolean */ public static boolean checkRoomNumber(String roomNumber) { String regex = "^\\d{3,4}$"; return Pattern.matches(regex, roomNumber); } /** * 将身份证后六位隐藏,不显示 * * @param identityID identityID * @return String */ public static String hideIdentityID(String identityID) { if(identityID != null && identityID.length() > 6) { identityID = identityID.substring(0, identityID.length() - 6) + "******"; } return identityID; } /** * 是否规范的邮编 * * @param toCheckStr toCheckStr * @return 是否规范的邮编 */ public static boolean isPostalCode(String toCheckStr) { return isNumeric(toCheckStr) && toCheckStr.length() == 6; } /** * 邮箱验证 * * @param toCheckStr toCheckStr * @return 邮箱验证 */ public static boolean isEmail(String toCheckStr) { String patternStr = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$"; return canMatch(toCheckStr, patternStr); } /** * 办公电话验证 格式:区号(可选)-主机号-分机号(可选) * * @param toCheckStr toCheckStr * @return 办公电话验证 格式:区号(可选)-主机号-分机号(可选) */ public static boolean isWorkPhone(String toCheckStr) { String patternStr = "(^[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,8}$)"; return canMatch(toCheckStr, patternStr); } /** * 常用固定电话验证 格式:区号(可选)-主机号 * * @param toCheckStr toCheckStr * @return 常用固定电话验证 格式:区号(可选)-主机号 */ public static boolean isPhoneNumber(String toCheckStr) { String patternStr = "(^[0-9]{3,4}-[0-9]{7,8}$)|(^[0-9]{7,8}$)"; return canMatch(toCheckStr, patternStr); } /** * 是否为规范的手机电话号码 ,以13/15/18开头 * * @param toCheckStr toCheckStr * @return 是否为规范的手机电话号码 ,以13/15/18开头 */ public static boolean isTelephone(String toCheckStr) { String patternStr = "(^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$)"; return canMatch(toCheckStr, patternStr); } public static boolean isDateyyMMddHHmmss(String toCheckStr) { return canMatch(toCheckStr, "([1-2])([0-9]{3})([0-1])([0-9])([0-3])([0-9])([0-2])([0-9])([0-5])([0-9])([0-5])([0-9])"); } }