正则表达式(日期、金额、特殊字符)_java语言

正则表达式-java

正则表达式在线测试网站(个人觉得还算精确)http://tool.chinaz.com/regex/
备注:如有错误,希望留言指出,虚心请教

  1. 金额格式:正数【包含至多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();
    	}
    
  2. 金额格式:正数、负数、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();
    	}
    
  3. 日期格式【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;
    	}
    
  4. 纯日期格式+时分秒【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();
    	}
    
  5. 日期格式验证部分闰年等【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();
    	}
    
  6. 特殊字符串(可以根据实际情况进行增减):

       /**
         * 校验是否有特殊字符串
         * @param str
         * @return
         */
    	public static Boolean checkTeShu(String str){
            String  regExp = "[`~!@#$%^&*()+=|{}':;'_\\[\\]\\-<>/?~!@#¥%……&*——+|{}【】‘;:”“’。,、?]";
            Pattern p = Pattern.compile(regExp);
            Matcher m = p.matcher(str);
            return m.find();
        }
    
  7. 金额格式限制位数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();
        }
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值