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

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

相关推荐
左左右右左右摇晃5 分钟前
计算机网络笔记整理
笔记·计算机网络
不吃西红柿的859 分钟前
[职场] 内容运营求职简历范文 #笔记#职场发展
笔记·职场和发展·内容运营
努力也学不会java15 分钟前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
攒了一袋星辰17 分钟前
高并发强一致性顺序号生成系统 -- SequenceGenerator
java·数据库·mysql
小涛不学习19 分钟前
Spring Boot 详解(从入门到原理)
java·spring boot·后端
似水明俊德1 小时前
02-C#.Net-反射-学习笔记
开发语言·笔记·学习·c#·.net
于先生吖1 小时前
Java框架开发短剧漫剧系统:后台管理与接口开发
java·开发语言
智者知已应修善业1 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
C羊驼2 小时前
C语言:两天打鱼,三天晒网
c语言·经验分享·笔记·算法·青少年编程
daidaidaiyu2 小时前
Spring IOC 源码学习 声明式事务的入口点
java·spring