【Java常用API】正则表达式练习

news2024/11/27 8:38:18
🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!


目录

请使用正则表达式完成如下需求

练习题1,需求如下:

练习题2,需求如下:

正则表达式总结


请使用正则表达式完成如下需求

练习题1,需求如下:

请编写正则表达式验证用户输入的手机号码是否满足要求

请编写正则表达式验证用户输入的邮箱号是否满足要求。

请编写正则表达式验证用户输入的电话号码是否满足要求。

package Regex;

public class demon4 {
    public static <string> void main(String[] args) {
                /*
            需求
            请编写正则表达式验证用户输入的手机号码是否满足要求。请编写正则表达式验证用户输入的邮箱号是否满足要求。请编写正则表达式验证用户输入的电话号码是否满足要求。
            验证手机号码 13112345678 13712345667 13945679027 139456790271
            验证座机电话号码 020-2324242 02122442 027-42424 0712-3242434
            验证邮箱号码 3232323@qq.com zhangsan@itcast.cnn dlei0009@163.com dlei0009@pci.com.cn
        */

        //心得:
        //拿着一个正确的数据,从左到右依次去写。
        //13112345678
        //分成三部分:
        //第一部分:1 表示手机号码只能以1开头
        //第二部分:[3-9] 表示手机号码第二位只能是3-9之间的
        //第三部分:\\d{9} 表示任意数字可以出现9次,也只能出现9次
        String regex1 = "1[3-9]\\d{9}";
        System.out.println("13112345678".matches(regex1));
        System.out.println("13712345667".matches(regex1));

        System.out.println("-------------------------------------------------------");

        //座机电话号码
        //020-2324242 02122442 027-42424 0712-3242434
        //思路:
        //在书写座机号正则的时候需要把正确的数据分为三部分
        //一:区号0\\d{2,3}
        //      0:表示区号一定是以0开头的
        //      \\d{2,3}:表示区号从第二位开始可以是任意的数字,可以出现2到3次。
        //二:-   ?表示次数,0次或一次
        //三:号码  号码的第一位也不能以0开头,从第二位开始可以是任意的数字,号码的总长度:5-10位
        String regex2 = "0\\d{2,3}-?[1,9]\\d{4,9}";
        System.out.println("020-2324242".matches(regex2));
        System.out.println("0712-3242434".matches(regex2));
        System.out.println("02122442".matches(regex2));

        System.out.println("------------------------------------------------");


        //邮箱号码
        //3232323@qq.com zhangsan@itcast.cnn dlei0009@163.com dlei0009@pci.com.cn
        //思路:
        //在书写邮箱号码正则的时候需要把正确的数据分为三部分
        //第一部分:@的左边 \\w+
        //      任意的字母数字下划线,至少出现一次就可以了
        //第二部分:@ 只能出现一次
        //第三部分:
        //      3.1         .的左边[\\w&&[^_]]{2,6}
        //                  任意的字母加数字,总共出现2-6次(此时不能出现下划线)
        //      3.2         . \\.
        //      3.3         大写字母,小写字母都可以,只能出现2-3次[a-zA-Z]{2,3}
        //      我们可以把3.2和3.3看成一组,这一组可以出现1次或者两次
        String regex3 = "\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3})(1,2)";
        System.out.println("3232323@qq.com".matches(regex3));
        System.out.println("zhangsan@itcast.cnn".matches(regex3));
        System.out.println("dlei0009@pci.com.cn".matches(regex3));

        System.out.println("--------------------------------------------");


        //24小时的正则表达式
        String regex4 = "([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";
        System.out.println("23:11:02".matches(regex4));
    }
}

练习题2,需求如下:

  • 请编写正则表达式验证用户名是否满足要求。

    要求:大小写字母,数字,下划线一共4-16位

  • 请编写正则表达式验证身份证号码是否满足要求。

    简单要求:18位,前17位任意数字,最后一位可以是数字可以是大写或小写的x

    复杂要求:按照身份证号码的格式严格要求。

练习代码如下:

package Regex;

public class demon5 {
    public static void main(String[] args) {
                /*
            正则表达式练习:
            需求
            请编写正则表达式验证用户名是否满足要求。要求:大小写字母,数字,下划线一共4-16位请编写正则表达式验证身份证号码是否满足要求。
            简单要求:18位,前17位任意数字,最后一位可以是数字可以是大写或小写的x复杂要求:按照身份证号码的格式严格要求。

            身份证号码:
            41080119930228457x
            510801197609022309
            15040119810705387X
            130133197204039024 I
            430102197606046442
        */

        //用户名要求:大小写字母,数字,下划线一共4-16位
        String regex1 = "\\w{4,16}";
        System.out.println("zhangsan".matches(regex1));
        System.out.println("@qwsd".matches(regex1));
        System.out.println("zhan_an".matches(regex1));

        System.out.println("--------------------------------");

        //身份证号码的简单校验
        //18位,前17位任意数字,最后一位可以是数字可以是大写或小写的x
        String regex2 = "[1-9]\\d{16}(\\d|X|x)";
        System.out.println("41080119930228457x".matches(regex2));
        System.out.println("510801197609022309".matches(regex2));
        System.out.println("15040119810705387X".matches(regex2));
        System.out.println("430102197606046442".matches(regex2));


        //忽略大小写的书写方式
        //在匹配的时候忽略abc的大小写
        String regex3 = "(?i)abc";
        System.out.println("--------------");
        System.out.println("ABC".matches(regex3));//true
        System.out.println("AbC".matches(regex3));//true


        //身份证号码的严格校验
        //编写正则的小心得:
        //第一步:按照正确的数据进行拆分
        //第二步:找每一部分的规律,并编写正则表达式
        //第三步:把每一部分的正则拼接在一起,就是最终的结果
        //书写的时候:从左到右去书写。

        //410801 1993 02 28 457x
        //前面6位:省份,市区,派出所等信息,第一位不能是0,后面5位是任意数字        [1-9]\\d{5}
        //年的前半段: 18 19 20                                             (18|19|20))
        //年的后半段: 任意数字出现两次                                         \\d{2}
        //月份: 01~ 09 10 11 12                                            (0[1-9]1[0-2])
        //日期: 01~09 10~19 20~29 30 31                                     (0[1-9]|[12]\\d|3[01])
        //后面四位: 任意数字出现3次 最后一位可以是数字也可以是大写x或者小写x           \\d{3}[\\dXx]
        String regex4 = "[1-9]\\d{5}(18|19|20))\\d{2}(0[1-9]1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]";
        System.out.println("----------------------------------");
        System.out.println("41080119930228457x".matches(regex2));
        System.out.println("510801197609022309".matches(regex2));
        System.out.println("15040119810705387X".matches(regex2));
        System.out.println("430102197606046442".matches(regex2));
        
    }
}

正则表达式总结

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

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

相关文章

【Auth Proxy】为你的 Web 服务上把锁

Auth Proxy 一个极简的用于 Web 服务鉴权的反向代理服务 极其简约的 UI对你的真实服务无任何侵入性支持容器部署&#xff0c;Docker Image 优化到不能再小&#xff08;不到 9MB&#xff09;GitHub&#xff1a;https://github.com/wengchaoxi/auth-proxy 效果 我在 http://lo…

一文读懂NAS存储:从零开始的存储“神器”

目录 一、初识NAS&#xff1a;它是何方神圣&#xff1f; 二、NAS存储的特点 三、NAS的工作原理简述 四、NAS的应用场景介绍 五、NAS与其他存储的区别 今天我们要揭开神秘面纱的是一个名为“NAS”的存储设备&#xff0c;它就像是你家中的私人云端资料库&#xff0c;帮你轻松…

【AIGC】全球首位AI软件工程师 Devin,程序员们真的会失业吗

文章目录 强烈推荐推荐一&#xff1a;人工智能网站推荐二&#xff1a;人工智能工具 Devin的诞生Devin的特点和能力Devin如何工作&#xff1f;程序员会彻底消失吗&#xff1f;总结强烈推荐推荐一&#xff1a;人工智能网站推荐二&#xff1a;人工智能工具 专栏集锦写在最后 强烈推…

【论文速读】| 增强静态分析以实现实用漏洞检测:一种集成大语言模型的方法

本次分享论文为&#xff1a;Enhancing Static Analysis for Practical Bug Detection: An LLM-Integrated Approach 基本信息 原文作者&#xff1a;Haonan Li, Yu Hao, Yizhuo Zhai, Zhiyun Qian 作者单位&#xff1a;加州大学河滨分校 关键词&#xff1a;静态分析、错误检测…

Linux hook系统调用使你文件无法删除

文章目录 前言一、什么是hook技术二、Linux hook种类三、系统调用表hook3.1 查看删除文件用到系统调用3.2 获取系统调用函数3.3 编写hook函数3.4 替换hook函数3.5 测试 参考资料 前言 hook技术在Linux系统安全领域有着广泛的应用&#xff0c;例如通过hook技术可以劫持删除文件…

Regex正则表达式 --java学习笔记

正则表达式 由一些特定字符组成&#xff0c;代表的是一个规则作用一&#xff1a;校验数据格式是否合法作用二&#xff1a;在一段文本中查找满足要求的内容 String提供了一个匹配正则表达式的方法 public boolean matches&#xff08;String regex&#xff08;正则表达式&…

高校|政务|医院|集团等网站站群建设要怎么做

网站站群集约化系统&#xff0c;建立统一部署、统一标准、统一规范、统一管理、统一安全体系、支持移动终端访问的“门户网站群”&#xff0c;建设以高校/集团/医院/门户网站为主站&#xff0c;以部门、院系、子公司及其应用为基础支撑的若干子站&#xff0c;形成若干主站子站以…

python3入门机器学习,知识点全面总结与代码实操示例

目录 写在前面的话 一、机器学习的基本任务与方法分类 机器学习的概念和定义 基本任务 二分类任务&#xff08;Binary Classification&#xff09;&#xff1a; 多分类任务&#xff08;Multi-class Classification&#xff09;&#xff1a; 多标签分类任务&#xff08;Mu…

第二证券股市指南:如何看懂股票的量价关系?

股票成交量是指生意日当天个股成交的股数&#xff0c;股票成交量越大&#xff0c;说明当天股票生意比较生动&#xff0c;商场上的流动资金增加&#xff0c;股票后期上涨的或许性加大。成交量越小&#xff0c;说明个股当天生意比较低迷&#xff0c;缺少出资者的注重。所以一般情…

室友打团太吵?一条命令断掉它的WiFi

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;更多干货&#xff0c;请关注专栏《网络安全自学教程》 ARP欺骗原理 1、arpspoof实现ARP欺骗1.1、主机探测1.2、欺骗…

【WEB3安全基建项目Secwarex】空投指南

GoPlusSecurity是WEB3安全基建项目&#xff0c;3月8日完成400万美元的私募融资&#xff0c;目前总融资已经高达1500万美元&#xff0c;其中包括Binance Labs、Huobi Incubator、Kucoin Ventures、Avalanche等知名机构参投。 1、打开网址&#xff1a;secwarex.io&#xff0c;点…

Gin框架 源码解析

https://zhuanlan.zhihu.com/p/136253346 https://www.cnblogs.com/randysun/category/2071204.html 这个博客里其他go的内容也讲的很好 启动 因为 gin 的安装教程已经到处都有了&#xff0c;所以这里省略如何安装&#xff0c; 建议直接去 github 官方地址的 README 中浏览安装…

QT 驾校系统界面布局编写

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);this->resize(ui->label_img->width(),ui->label_img->height());//图片自适应窗口大小ui->label_img->setScaledContents(true);//图片置…

sora笔记(三):diffusion transformer模型的发展历程

:::info &#x1f4a1; 在sora笔记&#xff08;一&#xff09;&#xff1a;sora前世今生与技术梗概 一文中介绍了目前未开源的sora模型可能涉及到的技术点&#xff0c;包括介绍了Vision Transformer&#xff0c;作为transformer正式用于图像的一种范式&#xff0c;为本文中将提…

慧海科创再探潮间带|全面调研推动梭子蟹产业进步

浙江的海岸线延绵,孕育了丰富的海洋生物多样性。在这样的背景下,慧海科创团队沿着宁波至舟山的潮间带开展了全面的调研活动。2024年3月15日,浙江海洋大学、宁波大学、上海理工大学的梭子蟹智能捆扎实践团队,深入海岸一线,与当地养殖户交流产业发展中的痛点难点,共同探讨梭子蟹产…

Java 多线程线程池分析

[1]前言 关于Java多线程的知识&#xff0c;看了很多博客书籍&#xff0c;对理论还是比较了解的。但是&#xff0c;最近写一个很简单的使用线程池对列表中任务进行处理&#xff0c;然后返回结果列表的功能&#xff0c;发现理论和实际操作还是有相当大的差距。 首先贴出一个很简…

适用于 Windows 2024 的 7 个最佳免费分区恢复软件分享

无法确定 2024 年 Windows 上最好的免费分区恢复软件是什么&#xff1f;那么&#xff0c;我们可以提供帮助&#xff01;我们测试了目前市场上可用的几种硬盘分区恢复软件 - 包括免费和付费版本。您现在所需要的只是 - 只需浏览列表并选择适合您要求的一项即可。继续阅读&#x…

ARM Cortex-R82处理器在压缩SSD场景的应用

ScaleFlux公司宣布在其下一代企业级SSD控制器产品线中采用Arm公司的Cortex-R82处理器。这一决策旨在应对企业环境中对高带宽存储解决方案日益增长的需求&#xff0c;并通过提升数据传输速度和效率来满足市场期待。 Arm Cortex-R82处理器是Arm公司迄今为止性能最强的实时处理器…

107 在携带请求体的情况下, hutool 将 get 请求转换为了 post 请求

前言 本问题主要是来自于同事 情况大致如下, 同样的代码 一个是测试用例, 一个是生产环境的应用, 访问同一个第三方服务, 参数什么的完全一致 但是 出现的问题就是 测试用例能够拿到正确的对方的响应, 但是 生产环境的应用 却是拿到的对方的报错 然后 我开始以为是 是否…

通过rmi实现远程rpc(可以认为java自带Dubbo RPC)

背景&#xff1a; 发现公司几个运行10年的游戏&#xff0c;用的竟然是rmi&#xff0c;而我只听说过dubbo 和 基于netty的rpc&#xff0c;于是就补充了下rmi。 其次&#xff0c;是最近对于跨服的思考&#xff0c;如何避免回调也需要用同步写法&#xff0c;rmi比较适合。 1)api…