java正则校验,手机号,邮箱,日期格式,时间格式,数字金额两位小数
3.58是否为金额:true
3.582是否为金额:false
1284789@qq.com是否为email:true
1284789qq.com是否为email:false
1823753112是否为手机号:false
18237531125是否为手机号:true
20240127判断字符串是否为日期格式:true
2024-01-27判断字符串是否为日期格式:true
2024/01/27判断字符串是否为日期格式:true
2024/01-27判断字符串是否为日期格式:true
2024-01-27 23:23:23判断字符串是否为日期格式:true
2024-01-27 23:23判断字符串是否为日期格式:false
2024-1-7判断字符串是否为日期格式:true
23:23:23判断字符串是否为时间格式:true
部分代码:源代码请移步文章附件
public class PatternUtils {
/**
* @title 判断字符串是否是金额(小数点前后是数字即可,无小数点后数据也ok,小数最多2位)
* @param amount
* @return boolean [-\+]?[.\d]*
*/
private static Pattern amountPattern = Pattern.compile("^(\\-|\\+)?\\d+(\\.\\d{0,2})?$");
private static Pattern emailPattern = Pattern.compile("\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}");
private static Pattern phonePattern = Pattern.compile("0?(13|14|15|18|17)[0-9]{9}");
public static boolean strIsAmount(String amount) {
if(StringUtils.isEmpty(amount)) {
return false;
}
return amountPattern.matcher(amount).matches();
}
public static boolean isEmail(String email) {
if(StringUtils.isEmpty(email)) {
return false;
}
return emailPattern.matcher(email).matches();
}
public static boolean isPhone(String phone) {
if(StringUtils.isEmpty(phone)) {
return false;
}
return phonePattern.matcher(phone).matches();
}
/**
* 金额验证 - 是否为负数,小数最多两位
*
* @param str
* @return boolean
*/
public static boolean isNegativeNumber(String str) {
try {
if (StringUtils.isNotEmpty(str)) {
String source = str.toString();
Pattern pattern = Pattern.compile("-[0-9]+(.[0-9]{0,2}+)?");
if (pattern.matcher(source).matches()) {
return true;
} else {
return false;
}
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 金额验证 - 是否为正数,小数最多两位
*
* @param str
* @return boolean
*/
public static boolean isPositiveNumber(String str) {
try {
if (StringUtils.isNotEmpty(str)) {
String source = str.toString();
Pattern pattern = Pattern.compile("^[+]?([0-9]+(.[0-9]{0,2})?)$");
if (pattern.matcher(source).matches()) {
return true;
} else {
return false;
}
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* @title 功能:判断字符串是否为日期格式
* @param strDate
* @return boolean
*/
public static boolean strIsDateTime(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;
}
}
/**
* @title 功能:判断字符串是否为时间格式
* @param strTime
* @return boolean
*/
public static boolean strIsTime(String strTime) {
Pattern pattern = Pattern.compile("^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$");
Matcher m = pattern.matcher(strTime);
return m.matches();
}
public static void main(String[] args) {
String sr1 = "3.58";
System.out.println(sr1 +"是否为金额:"+strIsAmount(sr1));
String sr2 = "3.582";
System.out.println(sr2 +"是否为金额:"+strIsAmount(sr2));
String sr3 = "1284789@qq.com";
System.out.println(sr3 +"是否为email:"+isEmail(sr3));
String sr4 = "1284789qq.com";
System.out.println(sr4 +"是否为email:"+isEmail(sr4));
String sr5 = "1823753112";
System.out.println(sr5 +"是否为手机号:"+isPhone(sr5));
String sr6 = "18237531125";
System.out.println(sr6 +"是否为手机号:"+isPhone(sr6));
String sr7 = "20240127";
System.out.println(sr7 +"判断字符串是否为日期格式:"+strIsDateTime(sr7));
String sr71 = "2024-01-27";
System.out.println(sr71 +"判断字符串是否为日期格式:"+strIsDateTime(sr71));
String sr72 = "2024/01/27";
System.out.println(sr72 +"判断字符串是否为日期格式:"+strIsDateTime(sr72));
String sr73 = "2024/01-27";
System.out.println(sr73 +"判断字符串是否为日期格式:"+strIsDateTime(sr73));
String sr74 = "2024-01-27 23:23:23";
System.out.println(sr74 +"判断字符串是否为日期格式:"+strIsDateTime(sr74));
String sr75 = "2024-01-27 23:23";
System.out.println(sr75 +"判断字符串是否为日期格式:"+strIsDateTime(sr75));
String sr76 = "2024-1-7";
System.out.println(sr76 +"判断字符串是否为日期格式:"+strIsDateTime(sr76));
String sr8 = "23:23:23";
System.out.println(sr8 +"判断字符串是否为时间格式:"+strIsTime(sr8));
}
}