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

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

相关推荐
yue0082 小时前
C#类继承
java·开发语言·c#
Larry_Yanan2 小时前
QML学习笔记(五十)QML与C++交互:QML中单例C++对象
开发语言·c++·笔记·qt·学习·ui·交互
im_AMBER2 小时前
算法笔记 09
c语言·数据结构·c++·笔记·学习·算法·排序算法
凯芸呢2 小时前
Java中的数组(续)
java·开发语言·数据结构·算法·青少年编程·排序算法·idea
竹竹零2 小时前
JacksonUtil--序列化与反序列化
java·开发语言·windows
钱多多_qdd2 小时前
基础篇:IoC(三):Bean实例化策略InstantiationStrategy
java·spring
float_com3 小时前
【java基础语法】---- 综合训练
java
Dyan_csdn3 小时前
springboot系统设计选题3
java·spring boot·后端
sheji34163 小时前
【开题答辩全过程】以 基于Java的旅游网站的设计与开发为例,包含答辩的问题和答案
java·开发语言·旅游