/**
* 校验器:利用正则表达式校验邮箱、手机号等
*/
public class Validator {
/**
* 正则表达式:验证用户名
*/
public static final String REGEX_USERNAME = "^[a-zA-Z0-9]{6,20}$";
/**
* 正则表达式:验证密码(字母+数字)
* <p>
* ^ 匹配一行的开头位置
* (?![0-9]+$) 预测该位置后面不全是数字
* (?![a-zA-Z]+$) 预测该位置后面不全是字母
* [0-9A-Za-z] {8,16} 由8-16位数字或这字母组成
* $ 匹配行结尾位置
* 注:(?!xxxx) 是正则表达式的负向零宽断言一种形式,标识预该位置后不是xxxx字符。
*/
public static final String REGEX_PASSWORD = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,15}$";
/**
* 正则表达式:验证手机号
*/
public static final String REGEX_MOBILE =
"^((13[0-9])|(15[^4,\\D])|(16[0-9])|(18[0-9])|(17[0-9]))\\d{8}$";
//public static final String REGEX_MOBILE = "^((13[0-9])|(15[^4,\\D])|(18[0,2,5-9])|(17[0-9]))\\d{8}$";
//public static final String REGEX_MOBILE = "^(1[0-9][0-9])\\d{8}$";
/**
* 正则表达式:验证邮箱
*/
//public static final String REGEX_EMAIL = "^([a-z0-9A-Z]+[_-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
public static final String REGEX_EMAIL =
"^[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$";
;
/**
* 正则表达式:验证汉字
*/
public static final String REGEX_CHINESE = "^[\u4e00-\u9fa5],{0,}$";
/**
* 正则表达式:验证身份证
*/
public static final String REGEX_ID_CARD = "(^\\d{18}$)|(^\\d{15}$)";
/**
* 正则表达式:验证URL
*/
public static final String REGEX_URL = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
/**
* 正则表达式:验证IP地址
*/
public static final String REGEX_IP_ADDR = "(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)";
/**
* 校验用户名
*
* @return 校验通过返回true,否则返回false
*/
public static boolean isUsername(String username) {
return Pattern.matches(REGEX_USERNAME, username);
}
/**
* 校验密码
*
* @return 校验通过返回true,否则返回false
*/
public static boolean isPassword(String password) {
return Pattern.matches(REGEX_PASSWORD, password);
}
/**
* 校验手机号
*
* @return 校验通过返回true,否则返回false
*/
public static boolean isMobile(String mobile) {
//Pattern p = Pattern.compile(MOBILE_PHONE_RE);
//Matcher m = p.matcher(mobiles);
//return m.matches();
return Pattern.matches(REGEX_MOBILE, mobile);
}
/**
* 校验邮箱
*
* @return 校验通过返回true,否则返回false
*/
public static boolean isEmail(String email) {
return Pattern.matches(REGEX_EMAIL, email);
}
/**
* 校验汉字
*
* @return 校验通过返回true,否则返回false
*/
public static boolean isChinese(String chinese) {
return Pattern.matches(REGEX_CHINESE, chinese);
}
/**
* 校验身份证
*
* @return 校验通过返回true,否则返回false
*/
public static boolean isIDCard(String idCard) {
if (idCard.toUpperCase().matches("(^\\d{15}$)|(^\\d{17}([0-9]|X)$)")) {
return true;
} else {
return false;
}
}
/**
* 校验URL
*
* @return 校验通过返回true,否则返回false
*/
public static boolean isUrl(String url) {
return Pattern.matches(REGEX_URL, url);
}
/**
* 校验IP地址
*/
public static boolean isIPAddr(String ipAddr) {
return Pattern.matches(REGEX_IP_ADDR, ipAddr);
}
public static void main(String[] args) {
String username = "fdsdfsdj";
System.out.println(Validator.isUsername(username));
System.out.println(Validator.isChinese(username));
}
/**
* 校验车牌号
*
* @return 校验通过返回true,否则返回false
*/
public static boolean isCarCode(String carCode) {
String carnumRegex = "[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}";
if (carCode.toUpperCase().matches(carnumRegex)) {
return true;
} else {
return false;
}
}
/**
* 判断是否是车牌号
*/
public static boolean isCarNo(String CarNum) {
//匹配第一位汉字
String str = "京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼甲乙丙己庚辛壬寅辰戍午未申";
if (!(CarNum == null || CarNum.equals(""))) {
String s1 = CarNum.substring(0, 1);//获取字符串的第一个字符
if (str.contains(s1)) {
String s2 = CarNum.substring(1, CarNum.length());
//不包含I O i o的判断
if (s2.contains("I") || s2.contains("i") || s2.contains("O") || s2.contains("o")) {
return false;
} else {
if (!CarNum.matches("^[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}$")) {
return true;
}
}
} else {
return false;
}
} else {
return false;
}
return false;
}
/**
* * 验证输入的名字是否为“中文”或者是否包含“·”
*/
public static boolean isLegalName(String name){
if (name.contains("·") || name.contains("•")){
if (name.matches("^[\\u4e00-\\u9fa5]+[·•][\\u4e00-\\u9fa5]+$")){
return true;
}else {
return false;
}
}else {
if (name.matches("^[\\u4e00-\\u9fa5]+$")){
return true;
}else {
return false;
}
}
}
}
Java 正则表达式对用户名、手机号、邮箱等验证
最新推荐文章于 2024-07-20 03:22:32 发布