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的教学内容!!!

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

相关推荐
L0CK3 分钟前
三种依赖注入详解
java
shoubepatien25 分钟前
JAVA -- 07
java·后端·intellij-idea
map_vis_3d25 分钟前
JSAPIThree 加载单体三维模型学习笔记:SimpleModel 简易加载方式
笔记·学习·3d
Gu_yyqx27 分钟前
Maven进阶
java·maven
小肖爱笑不爱笑29 分钟前
JavaScript
java·javascript·json·web
专注于大数据技术栈29 分钟前
java学习--String和StringBuffer互转
java·学习
天勤量化大唯粉1 小时前
枢轴点反转策略在铜期货中的量化应用指南(附天勤量化代码)
ide·python·算法·机器学习·github·开源软件·程序员创富
waper971 小时前
nohup java -jar启动jar包错报错 地址已在使用
java·开发语言·jar
CoderJia程序员甲1 小时前
GitHub 热榜项目 - 日榜(2025-12-19)
ai·开源·llm·github
無量1 小时前
ConcurrentHashMap实现原理
java·后端