Java Regex练习(1) (2024.7.21)

Regex1

java 复制代码
package RegexExercise20240721;
import java.util.Scanner;
public class RegexExercise {
    public static void main(String[] args) {
        // 正则表达式
        /* 假如现在要求校验一个qq号码是否正确。
            规则:6位及20位之内,0不能在开头,必须全部是数字。
            先使用目前所学知识完成校验需求然后体验一下正则表达式检验。
        */
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个qq号");
        String qq = sc.nextLine();
        if (qq.matches("[1-9]\\d{5,19}")) {  // [1-9]表示第一个数字只能是1-9
            System.out.println("此qq号合法");      //  \\d表示是数组的预定义字符,{5,19}
        } else {                                  //  表示除了第一位,还有5-19位数字
            System.out.println("此qq号非法");
        }

    }
}

Regex2

java 复制代码
package RegexExercise20240721;
import java.util.Scanner;
public class RegexExercise2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //1.要求字符串是小写辅音字符开头,后面纯字母,共六位
        /*System.out.println("请输入一个字符串");
        String testString = sc.nextLine();
        if (testString.matches("[a-z&&[^aeiou]][a-zA-Z]{5}")) {
            System.out.println("合法字符串");
        } else {
            System.out.println("非法字符串");
        }*/

        //2.要求字符串是aeiou中的某个字符开头,后跟ad
        System.out.println("请输入一个字符串");
        String testString = sc.nextLine();
        if (testString.matches("[aeiou]ad")) {
            System.out.println("合法字符串");
        } else {
            System.out.println("非法字符串");
        }
    }
}

Regex3

java 复制代码
package RegexExercise20240721;
import java.util.Scanner;
public class RegexExercise3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //练习:以字符串的形式打印一个双引号
        //在Java中\为转义字符
//        System.out.println("\"\""); // 只打""Java会认为你打了个空的字符串,所以说要用\"进行转义
//        System.out.println("\\"); // 同样,\会认为是一个转义字符,所以说要用\\来达到输出\的效果
        // 预定义字符
        // .表示任意一个字符
//        System.out.println("请输入一个字符串");
//        String str1 = sc.nextLine();
//        System.out.println(str1.matches(".{6}"));

        // /d表示[0-9]
        System.out.println("123456".matches("\\d{6}"));
        System.out.println("126".matches("\\d{6}")); // 位数不够
        System.out.println("1234aa".matches("\\d{6}")); // 不是纯数字
        System.out.println("-------------------------------------------");

        // /D表示[^0-9]
        System.out.println("123456".matches("\\D{6}")); // 不能出现数字
        System.out.println("abcdef".matches("\\D{6}"));
        System.out.println("abc132".matches("\\D{6}")); // 不能出现数字
        System.out.println("-------------------------------------------");

        // \s表示空白字符[\t\n\x0B\f\r]
        System.out.println(" \t".matches("\\s{2}")); // 大抵用得比较少
        System.out.println("-------------------------------------------");

        // \S表示非空白字符[^\s]
        System.out.println("123456".matches("\\S{6}")); // 无空白字符
        System.out.println("123 56".matches("\\S{6}")); // 有一个空白字符
        System.out.println("阿斯顿阿斯顿".matches("\\S{6}"));
        System.out.println("-------------------------------------------");

        // \w表示单词字符[a-zA-Z_0-9]
        System.out.println("123abc__".matches("\\w{8}"));
        System.out.println("123abc_$".matches("\\w{8}")); // 出现了非单词字符
        System.out.println("123abc_啊".matches("\\w{8}"));
        System.out.println("-------------------------------------------");

        // \W表示非单词字符[^\w]
        System.out.println("啊水水阿斯顿".matches("\\W{6}"));
        System.out.println("123阿斯顿".matches("\\W{6}")); // 出现了单词字符


    }
}

Regex4

java 复制代码
package RegexExercise20240721;
import java.util.Scanner;
public class RegexExercise4 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 正则表达式的数量词
        // 必须是数字 字母 下划线 至少6位
        System.out.println("123456789".matches("\\w{6,}")); // {6,}表示至少六位
        System.out.println("123456789".matches("\\w{6}"));  // {6} 表示刚好六位
        System.out.println("-----------------------------------------");
        // 因为{,}是一个范围,所以说{6,}的范围就是6到正无穷,所以说是至少六位

        // 必须是数字和字符 必须是4位
        System.out.println("1234".matches("[a-zA-Z_0-9]{4}"));
        System.out.println("abcd".matches("[\\w&&[^_]]{4}"));
        System.out.println("abd".matches("[\\w&&[^_]]{4}")); // 位数不够
        System.out.println("a_2d".matches("\\w{4}"));
        System.out.println("-----------------------------------------");

        // 出现0次或1次----> x?
        System.out.println("123456a".matches("\\d{6}\\w?")); // \w出现了一次
        System.out.println("123456".matches("\\d{6}\\w?"));  // \w没有出现
        System.out.println("123456ab".matches("\\d{6}\\w?"));// \w出现了两次->false
        System.out.println("-----------------------------------------");

        // 出现0次到多次----> x*
        System.out.println("123456abc".matches("\\d{6}\\w*")); // \w出现了多次
        System.out.println("123456".matches("\\d{6}\\w*"));    // \w出现了0次
        System.out.println("123456a".matches("\\d{6}\\w*"));   // \w出现了1次
        System.out.println("-----------------------------------------");

        // 出现1次到多次----> x+
        System.out.println("123456abc".matches("\\d{6}\\w+"));
        System.out.println("123456".matches("\\d{6}\\w+")); // \w没有出现->false
        System.out.println("123456a".matches("\\d{6}\\w+"));
        System.out.println("-----------------------------------------");
    }
}
相关推荐
腥臭腐朽的日子熠熠生辉31 分钟前
解决maven失效问题(现象:maven中只有jdk的工具包,没有springboot的包)
java·spring boot·maven
ejinxian33 分钟前
Spring AI Alibaba 快速开发生成式 Java AI 应用
java·人工智能·spring
杉之38 分钟前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat
圈圈编码1 小时前
Spring Task 定时任务
java·前端·spring
俏布斯1 小时前
算法日常记录
java·算法·leetcode
27669582921 小时前
美团民宿 mtgsig 小程序 mtgsig1.2 分析
java·python·小程序·美团·mtgsig·mtgsig1.2·美团民宿
爱的叹息1 小时前
Java 连接 Redis 的驱动(Jedis、Lettuce、Redisson、Spring Data Redis)分类及对比
java·redis·spring
程序猿chen1 小时前
《JVM考古现场(十五):熵火燎原——从量子递归到热寂晶壁的代码涅槃》
java·jvm·git·后端·java-ee·区块链·量子计算
松韬2 小时前
Spring + Redisson:从 0 到 1 搭建高可用分布式缓存系统
java·redis·分布式·spring·缓存
绝顶少年2 小时前
Spring Boot 注解:深度解析与应用场景
java·spring boot·后端