Java常用正则验证示例

import java.util.regex.Pattern;

/**
 * 常见格式检测
 *
 */
public class Checker {
	/**
	 * 检测字符串是否纯数字
	 *
	 * @param number
	 * @return Boolean
	 */
	public static final Boolean isNumber(String number) {
		return Pattern.matches("^\\d+$", number);
	}

	/**
	 * 检测性别是否合法
	 *
	 * @param gender
	 * @return Boolean
	 */
	public static final Boolean isGender(String gender) {
		return gender.equals("男") || gender.equals("女");
	}

	/**
	 * 检测MAC地址是否合法
	 * 
	 * @param mac
	 * @return Boolean
	 */
	public static final Boolean isMacAddr(String mac) {
		return Pattern.matches("^(?i)([\\dabcdef]{1,2}-){5}[\\dabcdef]{1,2}$", mac);
	}

	/**
	 * 检测IP地址是否合法
	 * 
	 * @param ip
	 * @return Boolean
	 */
	public static final Boolean isIpAddr(String ip) {
		return Pattern.matches("^(\\d{1,3}\\.){3}\\d{1,3}$", ip);
	}

	/**
	 * 检测端口是否合法
	 * 
	 * @param port
	 * @return Boolean
	 */
	public static final Boolean isPortAddr(String port) {
		return Pattern.matches("^([0-9]|[1-9]\\d|[1-9]\\d{2}|[1-9]\\d{3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-5])$", port);
	}

	/**
	 * 检测18位身份证号是否合法
	 * 
	 * @param idNumber
	 *            身份证号
	 * @return Boolean
	 */
	public static final Boolean isIdNumber(String idNumber) {
		return idNumber.matches("^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$");
	}

	/**
	 * 检测车牌号是否合法
	 * 
	 * @param plateNo
	 *            车牌号
	 * @return Boolean
	 */
	public static final Boolean isPlateNo(String plateNo) {
		return plateNo.matches("^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$");
	}

	/**
	 * 检测IMSI是否合法
	 * 
	 * @param imsi
	 *            国际移动用户识别码
	 * @see International Mobile Subscriber Identification Number
	 * @see MCC+MNC+MSIN
	 * @see 此方法仅适用于中国
	 * @return Boolean
	 */
	public static final Boolean isIMSI(String imsi) {
		return imsi.matches("^460(00|02|04|07|01|06|09|03|05|11)\\d{10}$");
	}

	/**
	 * 检测IMEI是否合法
	 * 
	 * @param imei
	 *            国际移动设备身份码
	 * @see International Mobile Equipment Identity
	 * @see TAC + FAC + SNR + SP
	 * @return Boolean
	 */
	public static final Boolean isIMEI(String imei) {
		return imei.matches("^\\d{15}$");
	}

	/**
	 * 检测邮箱是否合法
	 * 
	 * @param email
	 *            邮箱
	 * @return Boolean
	 */
	public static final Boolean isEmail(String email) {
		return email.matches("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$");
	}

	/**
	 * 检测手机号是否合法
	 *
	 * @param cellPhone
	 * @return Boolean
	 */
	public static final Boolean isCellPhone(String cellPhone) {
		return Pattern.matches("^((13[0-9])|145|147|(15[^4,\\D])|17[6-8]|(18[0-9])|199)\\d{8}$", cellPhone);
	}

	/**
	 * 检测QQ是否合法
	 * 
	 * @param qq
	 * @return Boolean
	 */
	public static final Boolean isQq(String qq) {
		return qq.matches("^[1-9][0-9]{4,10}$");
	}

	/**
	 * 检测微信号是否合法
	 * 
	 * @param wechat
	 * @return Boolean
	 */
	public static final Boolean isWechat(String wechat) {
		return wechat.matches("^[a-zA-Z]{1}[-_a-zA-Z0-9]{5,19}$") || isCellPhone(wechat) || isQq(wechat);
	}

	/**
	 * 检测经度是否合法
	 * 
	 * @param longitude
	 * @return Boolean
	 */
	public static final Boolean isLongitude(String longitude) {
		if (longitude.endsWith(".")) {
			longitude += "0";
		} else if (longitude.indexOf(".") == -1) {
			longitude += ".0";
		}
		return longitude.matches("^[\\-\\+]?(0?\\d{1,2}\\.\\d{1,20}|1[0-7]?\\d{1}\\.\\d{1,20}|180\\.0{1,20})$");
	}

	/**
	 * 检测纬度是否合法
	 * 
	 * @param latitude
	 * @return Boolean
	 */
	public static final Boolean isLatitude(String latitude) {
		if (latitude.endsWith(".")) {
			latitude += "0";
		} else if (latitude.indexOf(".") == -1) {
			latitude += ".0";
		}
		return latitude.matches("^[\\-\\+]?([0-8]?\\d{1}\\.\\d{1,20}|90\\.0{1,20})$");
	}

}

猜你喜欢

转载自blog.csdn.net/dai_haijiao/article/details/80333712