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

2023-11-19

正则表达式-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();
        }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式(日期、金额、特殊字符)_java语言 的相关文章

  • DNF管理软件包

    DNF是一款Linux软件包管理工具 用于管理RPM软件包 DNF可以查询软件包信息 从指定软件库获取软件包 自动处理依赖关系以安装或卸载软件包 以及更新系统到最新可用版本 DNF与YUM完全兼容 提供了YUM兼容的命令行以及为扩展和插件提
  • Day 13 - 正则表达式习题

    利用正则表达式完成下面的操作 1 用户名匹配 要求 1 用户名只能包含数字 字母 下划线 2 不能以数字开头 3 度在 6 到 16 位范围内 re username re compile r a zA Z w 5 15 print re
  • JAVA中正则表达式的使用

    正则表达式 用法 一 使用正则表达式对String进行匹配 1 控制匹配长度 1 使用 n 来精确控制 2 使用 n 表示大于等于n个 3 使用 m n 控制范围 4 使用 表示可以出现 0次或一次 5 使用 表示可以出现 0次或多次 6
  • 【Python_requests学习笔记(一)】基于requests和re模块,爬取百度图片

    基于requests和re模块 爬取百度图片 前言 此篇文章中介绍requests的基本用法 和基于requests和re模块 爬取百度图片的案例 正文 1 requests模块 1 1 requests模块介绍 requests模块 类似
  • 人人都看得懂的正则表达式教程

    编写验证规则最流行和最简单的方法就是正则表达式了 但唯一的一个问题是正则表达式的语法太隐晦了 让人蛋疼无比 很多开发者为了在项目中应用复杂的验证 经常要使用一些小抄来记住正则式的复杂语法和各种常用命令 在这篇文章中 我将试图让大家明白什么是
  • python正则表达式从字符串中提取数字的思路详解(转载)

    python从字符串中提取数字 使用正则表达式 用法如下 总结 匹配字符串的开始 匹配字符串的结尾 b 匹配一个单词的边界 d 匹配任意数字 D 匹配任意非数字字符 x 匹配一个可选的 x 字符 换言之 它匹配 1 次或者 0 次 x 字符
  • 正则表达式大全

    1 匹配中文 u4e00 u9fa5 2 英文字母 a zA Z 3 数字 0 9 4 匹配中文 英文字母和数字及下划线 u4e00 u9fa5 a zA Z0 9 同时判断输入长度 u4e00 u9fa5 a zA Z0 9 4 10 5
  • 4.4.5 密码验证(2)

    4 当且仅当含数字和字母的密码验证 如果密码当且仅当包含数字和字母 那么该密码的强度是中等强度 当然 它的安全性一般 以下正则表达式能够验证当且仅当包含数字和字母的密码 da zA Z d a zA Z da zA Z 74 正则表达式 7
  • Java正则表达式详解

    1 1 正则表达式的概念以及演示 正则表达式可以用一些规定的字符来制定规则 并用来校验数据格式的合法性 正则表达式就是用来验证各种字符串的规则 它内部描述了一些规则 我们可以验证用户输入的字符串是否匹配这个规则 正则表达式是一种强大的校验机
  • 正则实现去除字符串前后空格

    前言 正则去掉字符串前后空格 1 去除左空格 str1是处理后的 let str1 str replace s g 2 去除右空格 str2是处理后的 let str2 str replace s g 3 去除左右空格 let str3 s
  • 使用正则表达式爬虫抓取猫眼电影排行Top100

    目标站点分析 分析网址 首页 https maoyan com 点击榜单 https maoyan com board 点击Top100 https maoyan com board 4 目标站点为 https maoyan com boa
  • Java--集合知识再补充(Map集合)

    下面就是我整理的部分学习笔记 学无止境 加油 为方便对多个对象的操作 就对对象进行存储 集合就是存储对对象最常用的一种方式 数组长度是固定的 且可以存储基本数据类型 集合可变 集合只能存储对象 Collection 下有两个子接口 为Lis
  • 知道这20个正则表达式,能让你少写1,000行代码

    正则表达式 一个十分古老而又强大的文本处理工具 仅仅用一段非常简短的表达式语句 便能够快速实现一个非常复杂的业务逻辑 熟练地掌握正则表达式的话 能够使你的开发效率得到极大的提升 正则表达式经常被用于字段或任意字符串的校验 如下面这段校验基本
  • Python命令行参数定义及注意事项

    在命令行中运行python代码是很常见的 下面介绍如何定义命令后面跟的参数 常规用法 Python代码中主要使用下面几行代码来定义并获取需要在命令行中赋值的参数 import argparse parser argparse Argumen
  • QRegexp、QRegularExpression的用法学习

    QRegexp QRegularExpression的用法学习 文章目录 QRegexp QRegularExpression的用法学习 QRegexp QRegularExpression 模式选项 QRegexp Regexp 由表达式
  • 超详细!Jmeter性能测试(二)

    Jmeter 性能测试 二 关联 正则表达式提取器和JSON Extractor提取器 接入上篇博文继续 上篇地址 https blog csdn net weixin 44954642 article details 103054387
  • MySQL 通配符学习小结

    原文 http blog csdn net ithomer article details 5130386 MySQL 通配符 SQL的模式匹配允许你使用 匹配任何单个字符 而 匹配任意数目字符 包括零个字符 在 MySQL中 SQL的模式
  • SourceInsight

    1 开胃菜 初级应用 1 1 选择美丽的界面享受工作 虽然不能以貌取人 但似乎从来没有人责备以貌取软件的 SI的华丽界面 绝对符合现代花花世界的人的审美趣味 在SI中 我们可以轻松地把各种类型关键字 变量 标志符 函数 宏 注释等定义为不同
  • Python 正则表达式指南

    文章目录 1 正则表达式基础 1 1 简单介绍 1 2 数量词的贪婪模式与非贪婪模式 1 3 反斜杠的困扰 1 4 匹配模式 2 re模块 2 1 开始使用re 2 2 Match 2 3 Pattern 1 正则表达式基础 1 1 简单介
  • grep的用法

    命令介绍 Linux系统中grep命令是一种强大的文本搜索工具 它能使用正则表达式搜索文本 并把匹配的行打印出来 匹配到的标红grep全称是Global Regular Expression Print 表示全局正则表达式版本 它的使用权限

随机推荐

  • pyqt5讲解12:自定义参数 (给信号传入参数)

    在pyqt编程过程中 经常会遇到给槽函数传递自定义参数的情况 比如有一个信号与槽函数的连接是 button1 clicked connect shou page 对于clicked 信号来说 是没有参数的 对于shou page 是可以有参
  • SemanticKitti数据集的使用

    简单介绍 SemanticKitti数据集是在Kitti数据集上进行语义分割等操作的结果 主要任务包括点云的语义预测等 Kitti的点云里程计数据集一共有00 21这22个序列 每个序列都是一段录制的点云包 SemanticKitti为所有
  • ER模型详解

    ER 实体联系 模型中有三个主要的概念 实体集 属性 联系集 实体集对应的是数据库中的一个表 一个实体则对应数据库表中的一行 一个属性则对应数据库表中的一列 则就是一个字段 联系集就是表与表之间的关联关系 一对一关联 两个表的实体是一一对应
  • QT信号和槽的链接问题

    QT中常用的连接信号和槽的方式为以下两种 方法1 connect ui btnClose SIGNAL clicked Widget SLOT close 方法2 connect ui btnClose QPushButton clicke
  • R语言学习笔记:分析学生的考试成绩

    孩子上初中时拿到过全年级一次考试所有科目的考试成绩表 正好可以用于R语言的统计分析学习 为了不泄漏孩子的姓名 就用学号代替了 感兴趣可以下载测试数据进行练习 num class chn math eng phy chem politics
  • splunk 之 搜索(Searching)

    Let s Searching Results Example Results Example 注意 在结果之上 有一个菜单项允许您更改页面上显示的事件的数量 默认情况下 这个选项是每页20个 但是您可以单击这个选项来增加或减少这个数字 t
  • hooks中useEffect()使用总结

    常见使用 获取数据案例 import React useState useEffect from react import axios from axios function App const data setData useState
  • 非线性控制3.0——常用镇定算法之Lyapunov 直接法与间接法

    一 非线性系统镇定方法 Lyapunov 直接法与间接法 俄国学者李雅普诺夫提出的稳定性定理采用了状态向量来描述 适用于单变量 线性 非线性 定常 时变 多变量等系统 该方法称为李雅普诺夫法 有两种分类 1 李氏第一法 间接法 求解特征方程
  • css 实现相关案例

    css 实现相关案例 抽屉案例 带吸附箭头
  • ES删除数据

    ES删除数据 注意 删除数据请谨慎执行 删除大于 日期的 其他场景可参照执行 DeleteQuery deleteQuery new DeleteQuery deleteQuery setIndex es中 index deleteQuer
  • ORACLE数据库备份管理-rman备份到NFS

    1 相关案例 1 df h无法正常显示文件系统挂载情况 使用如下命令进行处理 umount f nfsdir 2 节点启动出现问题 询问是否包含nfs服务 将分享节点nfs服务重启 1 案例1从linux linux 实施脚本如下 mkdi
  • LeetCode 237. 删除链表中的节点

    题目链接 点击这里 Definition for singly linked list public class ListNode int val ListNode next ListNode int x val x class Solut
  • 深度学习(一)深度学习的概念

    什么是深度学习 深度学习是机器学习与神经网络 人工智能 图形化建模 优化 模式识别和信号处理等技术融合后产生的一个领域 深度学习网路是神经网络革命性的发展 人们甚至认为可以用它来创建更加强大的预测模型 深度学习的分类 深度学习使用多层机器学
  • CMakeLists中条件判断: if()-endif()成对出现

    缺少endif 时提示代码块opening is not closed 1 if if xxx 要缩进 endif 2 if else if xxx 要缩进 else xxx 要缩进 endif
  • Windows RuntimeError: Distributed package doesn‘t have NCCL built in问题

    问题描述 python在windows环境下dist init process group backend rank world size 处报错 RuntimeError Distributed package doesn t have
  • Serilog + SQL Server 动态分表记录日志

    Serilog SQL Server 分表记录日志 Serilog SQL Server 动态分表记录日志 依赖包 安装依赖包 配置 appsettings json 配置 Program cs Serilog SQL Server 动态分
  • visio 科学图形包_Gnuplot科学绘图(三十九)——地图及圆圈数据图

    Gnuplot科学绘图 系列内容Gnuplot科学绘图 三十一 曲线色彩填充 Gnuplot科学绘图 三十二 填充风格Gnuplot科学绘图 三十三 柱状图Gnuplot科学绘图 三十四 阶梯图Gnuplot科学绘图 三十五 数据平滑Gnu
  • element-ui中日期区间组件

    elementui中日期组件使用 最长只能选择3个月 不限制禁用日期 描述 时间组件代码 描述 点击 确定 按钮进行验证 点击 清空 按钮 清空输入框中的数据 时间范围不能超过3个月 并添加快捷选择今天 最近一周 最近一月 最近3个月 以下
  • js正则 年龄只能为正数,不能为负数,且不能超过150

    需求 要对输入的年龄加条件限制 不能任意输入 只能为正数 不能输入小数 负数
  • 正则表达式(日期、金额、特殊字符)_java语言

    正则表达式 java 正则表达式在线测试网站 个人觉得还算精确 http tool chinaz com regex 备注 如有错误 希望留言指出 虚心请教 金额格式 正数 包含至多2位小数 第1种形式 校验金额格式是否正确 正数 包含至多