Java练习-正则表达式 1

一、练习1

java 复制代码
package com.lkbhua.MyApi.BigDecimal;

public class Test1 {
    public static void main(String[] args) {
        /*验证手机号码、邮箱号、座机电话,利用正则表达式*/
        // 心得:
        // 拿着正确的数据,从左到往右依次去写
        // 电话:18373838319
        // 第一位都是1,第二位是3-9,第三位-第11位都是0-9数字
        String regex1 = "1[3-9]\\d{9}";
        System.out.println("18373838319".matches(regex1));
        System.out.println("18371238312".matches(regex1));
        System.out.println("18374128313".matches(regex1));

        // 座机号:010-12345678
        // 020-2324242 02122442 027-42424 0712-3242434
        // 一:区号 0\d{2,3} 0开头,表示从第二位开始可以是数字,可以出现2-3次
        // 二:-   ?次数(0或者1)次
        // 三:号码 第一位不能以0开头,从第二位开始可以任意的数字,号码的总长度5-10位
        String regex2 = "0\\d{2,3}-?[1-9]\\d{4,9}";
        System.out.println("010-12345678".matches(regex2));
        System.out.println("020-2324242".matches(regex2));
        System.out.println("02122442".matches(regex2));
        System.out.println("027-42424".matches(regex2));
        System.out.println("0712-3242434".matches(regex2));
        System.out.println("010-1234567".matches(regex2));


        // 邮箱:
        // 3232323@qq.com zhangsan@163.com 123@gmail.com diei0009@pci.com.cn
        // 思路:
        // @前面:\\w+ : 表示任意的字母数字下划线至少出现 一次
        // @中间:只能出现一次
        // @后面: 3.1 .的左边:可以是字母可以是数字 [\\w^_]{2,6}
        //       3.2   任意的字母加数字只能出现2-6次,不能出现下划线
        //       3.3 .的右边:大小写字母都可以,只能出现2-3次:[a-zA-Z]{2,3}
        //       我们可以把3.1和3.2看成一组,这一组可以出现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@163.com".matches(regex3));
        System.out.println("123@gmail.com".matches(regex3));
        System.out.println("diei0009@pci.com.cn".matches(regex3));

        String regex4 = "([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\ d";
        // 23:59:59
        // | 表示或
        // 01 02 03....
        // 10 11 12 13...19
        // 20 21 22 23

二、练习2

java 复制代码
package com.lkbhua.MyApi.BigDecimal;

public class Test2 {
    public static void main(String[] args) {
        /*请编写正则表达式验证用户是否满足要求:
          大小写字母、数字、下划线一共4-16位
          请编写正则表达式验证身份证是否满足要求*/
        String regx1 = "[a-zA-Z0-9_]{4,16}";
        System.out.println("a1234567890".matches(regx1));
        System.out.println("lkb-code".matches(regx1));

        // case1:
        // 18位,前17位0-9,第18位0-9或者X或者x
        String regx2 = "[1-9]\\d{16}(\\d|X|x)";
        System.out.println("12345678901234567".matches(regx2));

        // 忽略大小写的方式
        String regx3 = "(?i)abc";
        // 如果只想忽略某一位或者某一部分可以这样:
        String regx4 = "a(?i)bc";
        System.out.println("------------------");
        System.out.println("ABC".matches(regx3)); // true
        System.out.println("ABC".matches(regx4)); // false

        // case2:
        // 身份证的严格校验
        // 前6位:省份、市区、派出所等信息,第一位不能是0,后面五位是任意数字
        // 年前半部:   18、19、20
        // 年后半部:   任意数字出现两次
        // 月份:      01-09,10,11,12
        // 日期:      01-31.
        // 后面四位:   任意数字出现3次,最后一位可以是数字也可以是X或者x
        // 心得:
        // 第一步:按照正确的数据进行拆分
        // 第二步:对拆分的数据进行编写正则
        // 第三步:进行拼接
        String regx5 = "[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])(\\d|(?i)x)";
        // 快捷键Alt+Shift+上移键:挪动行代码
    }
}

声明:

以上均来源于B站@ITheima的教学内容!!!

本人跟着视频内容学习,整理知识引用

相关推荐
麦兜*4 分钟前
【springboot】图文详解Spring Boot自动配置原理:为什么@SpringBootApplication是核心?
android·java·spring boot·spring·spring cloud·tomcat
rabbit_pro16 分钟前
Java使用Mybatis-Plus封装动态数据源工具类
java·python·mybatis
期待のcode22 分钟前
Java虚拟机类加载机制
java·开发语言
看见繁华29 分钟前
Linux 交叉编译实践笔记
linux·运维·笔记
短剑重铸之日30 分钟前
《SpringBoot4.0初识》第四篇:原生镜像
java·原生镜像·springboot4.0
CoderJia程序员甲30 分钟前
GitHub 热榜项目 - 日榜(2026-1-9)
开源·大模型·llm·github·ai教程
程序员欣宸33 分钟前
LangChain4j实战之十二:结构化输出之三,json模式
java·人工智能·ai·json·langchain4j
天若有情6731 小时前
打破思维定式!C++参数设计新范式:让结构体替代传统参数列表
java·开发语言·c++
亲爱的非洲野猪1 小时前
从ReentrantLock到AQS:深入解析Java并发锁的实现哲学
java·开发语言
wheelmouse77881 小时前
如何设置VSCode打开文件Tab页签换行
java·python