java正则校验,手机号,邮箱,日期格式,时间格式,数字金额两位小数

news2025/1/19 14:34:37

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));
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1416274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

01_Anaconda环境搭建

概述 Anaconda包含了许多常用的科学计算和数据分析的库和工具。通过Anaconda,用户可以更方便地安装、管理和更新这些库和工具,从而提高工作效率。 Anaconda还提供了一个名为conda的包管理器,可以帮助用户方便地安装、管理和更新这些库和工具…

linux 基于科大讯飞的文字转语音使用

官方文档地址:离线语音合成 Linux SDK 文档 | 讯飞开放平台文档中心 一、SDK下载 1、点击上面官方文档地址的链接,可以跳转到以下界面。 2、点击“普通版”,跳转到以下界面。 3、点击“下载”跳转到以下界面 4、最后,点击“SDK下…

AI编译器的前端优化策略

背景 工作领域是AI芯片工具链相关,很多相关知识的概念都是跟着项目成长建立起来,但是比较整个技术体系在脑海中都不太系统,比如项目参与中涉及到了很多AI编译器开发相关内容,东西比较零碎,工作中也没有太多时间去做复盘…

Linux 增加 SWAP 空间

一、需求 通过阿里云启动项目时,使用Vuepress build编译静态页面时内存需要800MB,导致内存不够,因此考虑使用swap方式,置换一些内存资源存放swap磁盘。 [rootxxx myblog]# npm run docs:dev> myblog1.0.0 docs:dev > vuep…

分类预测 | Matlab实现DT决策树多特征分类预测

分类预测 | Matlab实现DT决策树多特征分类预测 目录 分类预测 | Matlab实现DT决策树多特征分类预测分类效果基本描述程序设计参考资料分类效果

ParaView更改RenderView背景颜色

如下图,这种蓝紫色是ParaView的RenderView默认设置颜色 想要更改背景颜色,需要打开Properties如果想要更改渲染物体的颜色,需要打开Color Map Editor 打开方式: 在页面上方工具栏的地方右键,勾选Properties和Color …

stable diffusion学习笔记——文生图(二)

LORA和Embeddings都可以对画面内容进行调整。目前LORA主要用来定义画面特征,如具体的人物,衣物,画风等。Embeddings目前主要用于反面提示词中,用来避免错误的画面表现。 LORA lora的全称为:低秩适应模型。lora的基本…

算法,不再难学!揭秘两款让你迅速学会算法的在线工具

1. VisuAlgo VisuAlgo 是一个由 Dr. Steven Halim 创立的在线平台,用于通过可视化的方式帮助学生和开发者理解和掌握各种复杂的数据结构和算法。该网站特别适合那些视觉学习者,也就是通过看图形、动画和演示来更好地理解概念的人。 以下是 VisuAlgo 的一些关键特点和功能: …

深兰科技入选亿欧《“制”敬不凡先锋榜·智能机器人Top10》榜单

日前,由亿欧协办的2023工博会工业智能化发展高峰论坛于上海成功举办,会上发布了《2023智能制造:“制”敬不凡先锋者》系列名单。深兰科技凭借在智能机器人开发中的技术创新和模式应用,入选《“制”敬不凡先锋榜——智能机器人Top1…

Java8-Stream 流基本应用-groupBy进行分组

groupBy进行分组 Testpublic void testStreamGroupBy(){List<UserInfoModel> resultnew ArrayList<>();for (int i 0; i < 10; i) {UserInfoModel usernew UserInfoModel();user.setUserId(i"");user.setUserName("kangshihang");result.a…

基于深度学习的狗狗类别检测

探索狗狗识别技术 引言1. 数据集介绍1.1 语境1.2 内容1.3 致谢 2. 项目背景与意义3. 项目实现流程3.1 数据处理与准备3.2 环境准备与工具安装3.3 模型配置与训练3.4 模型评估与预测3.5 模型推理与部署 4. 总结 服务 引言 随着人工智能技术的不断发展&#xff0c;图像识别已成为…

LabVIEW信号时间间隔测量

用LabVIEW软件平台开发一个用于测量两路信号时间间隔的系统。系统利用LabVIEW的数据采集和处理能力&#xff0c;能够准确测量并分析来自不同硬件板卡的信号时间间隔&#xff0c;这对于精确控制和数据分析至关重要。 系统主要由以下几部分组成&#xff1a;数据采集卡、信号处理…

【Linux】命名管道

文章目录 命名管道一、命名管道的原理二、命名管道的创建命令行中创建程序中创建 - mkfifo函数&#xff1a; 三、命名管道的使用命名管道实现server&client通信 四、匿名管道与命名管道的区别 命名管道 如果涉及到在文件系统中创建一个有名的管道&#xff0c;那么就是在使…

【c语言】详解操作符(下)

前言&#xff1a; 在上文中&#xff0c;我们已经学习了 原码、反码、补码、移位 操作符、移位操作符、位操作符、逗号表达式、下标访问[ ]、函数调用&#xff08; &#xff09;&#xff0c;接下来我们将继续学习剩下的操作符。 1. 结构成员访问操作符 1.1 结构体成员的直接访…

技术书评和笔记【01】脑机接口-电路与系统 【2020版】

前言: 荷兰作者,Amir Zjajo博士,毕业于荷兰代尔夫特理工大学,方向 面向移动健康的低功耗混合型号电路与系统,以及,面向认知的神经形态电路。 ,脑机接口 - 电路与系统一书,系统介绍了,脑机接口电路与系统的实现技术,尤其,提到了量产和设计的问题,难能可贵,摘录如…

预训练语言模型transformer

预训练语言模型的学习方法有三类&#xff1a;自编码&#xff08;auto-encode, AE)、自回归&#xff08;auto regressive, AR&#xff09;&#xff0c;Encoder-Decoder结构。 决定PTM模型表现的真正原因主要有以下几点&#xff1a; 更高质量、更多数量的预训练数据增加模型容量…

CSS--Emmet 语法

Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度, Vscode内部已经集成该语法. 目录 1. 快速生成HTML结构语法 1.1 快速生成HTML结构语法 2. 快速生成CSS样式语法 2.1 快速生成CSS样式语法 1. 快速生成HTML结构语法 1.1 快速生成HTML结构语法 1. 生成标…

【C++】C++ 入门 — 命名空间,输入输出,函数新特性

C 1 前言2 命名空间2.1 概念引入2.2 开始使用2.3 投入应用 3 输入与输出3.1 基础知识3.2 开始使用3.3 注意局限 4 函数新特性4.1 缺省参数4.1.1 开始使用4.1.2 注意事项 4.2 函数重载4.2.1 开始使用4.2.2 如何实现 Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读下…

仰暮计划|“老师说我其实很聪明,就是家里太穷了没条件,不然我现在也是……”

吴桂荣老人回忆录 在我外婆家的时候&#xff0c;我跟几位老奶奶坐在门口一起聊天&#xff0c;我询问她们是否能帮助我完成一份作业&#xff0c;她们笑着答应了&#xff0c;最后我选择了其中的一位老奶奶作为了解对象&#xff0c;她邀请我去家中交谈。通过了解&#xff0c;我得知…

Jmeter性能测试: 基于JDK 21 安装 Jmeter 5.6.3

目录 一、实验 1.环境 2.JDK下载 3.Jmeter下载 4.Windows安装JDK 21 5.Windows安装Jmeter 5.6.3 6.Linux安装JDK 21 7.Linux安装Jmeter 5.6.3 二、问题 1. Linux 的profile、bashrc、bash_profile文件有哪些区别 一、实验 1.环境 &#xff08;1&#xff09;主机 表…