正则表达式-java
正则表达式在线测试网站(个人觉得还算精确)http://tool.chinaz.com/regex/
备注:如有错误,希望留言指出,虚心请教
-
金额格式:正数【包含至多2位小数】:
第1种形式:
/** * 校验金额格式是否正确(正数【包含至多2位小数】、包括0) * @param amount 金额 */ public static boolean isMatchMoneyFormat(String money){ String regex ="(^[1-9]([0-9]+)?(\\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\\.[0-9]{1,2}$)"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(money); return matcher.find(); }
第2种形式:
/** * 校验金额格式是否正确(必须2位小数) * @param amount 金额 */ public static boolean validMoneyPointFormat(String money){ String regex ="^(([1-9]{1}\\d*)|(0{1}))(\\.\\d{2})$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(money); return matcher.find(); }
-
金额格式:正数、负数、0.00(注必须2位小数):
/** * 校验金额格式是否正确(正数、负数,0.00,注必须2位小数) * @param amount 金额 */ public static boolean validNegativeAndPositiveMoneyFormat(String money){ String regex ="^(-?([1-9]{1}\\d*)|(-?0{1}))(\\.\\d{2})$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(money); return matcher.find(); }
-
日期格式【yyyy-MM-dd】(只要符合该格式即可,如 9999-00-11):
/** * 验证纯日期(格式)-未排除不符合规则的日期yyyy-MM-dd * @param dateStr 日期字符串 * @return 是否为日期 */ public static boolean validDateMatch(String dateStr){ String regx = "(\\d{4})-([0-1]\\d)-([0-3]\\d)"; Pattern pattern = Pattern.compile(regx); Matcher matcher = pattern.matcher(dateStr); return matcher.find(); }
注意:需要搭配该方法进行判断日期是否有效:
判断是否需要使用到 SimpleDateFormat.setLenient(boolean )方法
SimpleDateFormat.setLenient(true) : 默认值true,不严格解析日期,会自动计算。SimpleDateFormat.setLenient(false):严格解析日期,如果日期不合格就抛异常,不会自动计算。
/** * 验证时间是否符合格式并返回date(把字符串转换成日期格式) * @param value 值 * @param format 格式 * @return */ public static Date validDateOrTimeExist(String value,String dateFormat){ Date date=null; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat); try { //setLenient(true),java会对当前日期进行计算,比如24个月那么就是1年以后,自动换算,不抛异常 //setLenient(false),严格计算,比如55个月那么就是不合法的日期了,直接异常 simpleDateFormat.setLenient(false); date = simpleDateFormat.parse(value); } catch (ParseException e) { return date; } return date; }
-
纯日期格式+时分秒【yyyy-MM-dd hh:mm:ss】:
/** * 验证纯日期+时间分yyyy-MM-dd hh:mm:ss * @param dateStr 日期字符串 * @return 是否为日期 */ public static boolean validDateAndTimeMatch(String dateAndTimeStr){ String regx = "^(\\d{4})-([0-1]\\d)-([0-3]\\d)\\s([0-5]\\d):([0-5]\\d):([0-5]\\d)$"; Pattern pattern = Pattern.compile(regx); Matcher matcher = pattern.matcher(dateAndTimeStr); return matcher.find(); }
-
日期格式验证部分闰年等【yyyy-MM-dd】、【yyyy/MM/dd】:
5.1.【yyyy-MM-dd】:/** * 验证日期字符串格式输入是否正确(yyyy-MM-dd) * @param dateStr 日期字符串 * @return Boolean */ public static boolean valiDateTimeWithLongFormatForBar(String dateStr) { String regx = "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})([-])(((0[13578]|1[02])([-])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)([-])(0[1-9]|[12][0-9]|30))|(02([-])(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))([-])02([-])29)"; Pattern pattern=Pattern.compile(regx); return pattern.matcher(dateStr).matches(); }
5.2【yyyy/MM/dd】:
/** * 验证日期字符串格式输入是否正确(yyyy/MM/dd) * @param dateStr 日期字符串 * @return Boolean */ public static boolean valiDateTimeWithLongFormatForSlash(String dateStr) { String regx = "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})([/])(((0[13578]|1[02])([/])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)([/])(0[1-9]|[12][0-9]|30))|(02([/])(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))([/])02([/])29)"; Pattern pattern=Pattern.compile(regx); return pattern.matcher(dateStr).matches(); }
-
特殊字符串(可以根据实际情况进行增减):
/** * 校验是否有特殊字符串 * @param str * @return */ public static Boolean checkTeShu(String str){ String regExp = "[`~!@#$%^&*()+=|{}':;'_\\[\\]\\-<>/?~!@#¥%……&*——+|{}【】‘;:”“’。,、?]"; Pattern p = Pattern.compile(regExp); Matcher m = p.matcher(str); return m.find(); }
-
金额格式限制位数decimal(15,2)【13位小数,2位小数】(包括空字符串):
/** * 校验金额格式限制位数decimal * @param str * @return */ public static Boolean checkMoneyDigit(String str){ //纯属限制位数的的整数"^\s*$|(^[1-9][0-9]{0,8}?$)|(^(0){1}$)" String regExp = "^\\s*$|(((^[1-9][0-9]{0,12})+(\\.[0-9]{1,2})?)$)|(^(0){1}$)|(^[0-9]\\.[0-9]{1,2}$"; Pattern p = Pattern.compile(regExp); Matcher m = p.matcher(str); return m.find(); }