Java 正则表达式

J a v a  正则表达式 \huge{Java \space 正则表达式} Java 正则表达式

概述

正则表达式是什么?
简单来讲就是使用一些已经提前规定好的字符指定字符串匹配的规则。
先直观感受一下正则表达式的魅力,给定一个业务场景:
在这里插入图片描述
解决:

public class RegexDemo1 {
    public static void main(String[] args) {
        // 需求:校验qq号码,必须全部数字 6 - 20位
        System.out.println(checkQQ("251425998"));
        System.out.println(checkQQ("2514259a98"));
        System.out.println(checkQQ(null));
        System.out.println(checkQQ("2344"));

        System.out.println("-------------------------");
        
        // 正则表达式的初体验:
        System.out.println(checkQQ2("251425998"));
        System.out.println(checkQQ2("2514259a98"));
        System.out.println(checkQQ2(null));
        System.out.println(checkQQ2("2344"));

    }
	
	//使用正则表达式进行判断
	//\\d两个\是因为第一个要进行转义
	//\\d{6,20}意思就是检查字符串最短6位,最多20位,是否全部都是数字
    public static boolean checkQQ2(String qq){
        return qq != null && qq.matches("\\d{6,20}");
    }


	//非正则表达式的判断
	//首先判断长度是否合格
	//然后逐个看每位是否合格
    public static boolean checkQQ(String qq){
        // 1、判断qq号码的长度是否满足要求
        if(qq == null || qq.length() < 6 || qq.length() > 20 ) {
            return false;
        }

        // 2、判断qq中是否全部是数字,不是返回false
        //  251425a87
        for (int i = 0; i < qq.length(); i++) {
            // 获取每位字符
            char ch = qq.charAt(i);
            // 判断这个字符是否不是数字,不是数字直接返回false
            if(ch < '0' || ch > '9') {
                return false;
            }
        }

        return true; // 肯定合法了!
    }
}

\\d{6,20}与后面的一大坨,一看就知道正则表达式比较好用啦!

正题

使用

先不说正则表达式怎么写,给出来正则表达式应该怎么用呢?
S t r i n g String String类中的 m a t c h e s ( ) matches() matches()方法就可以传入正则表达式进行判断。
例:

qq.matches("\\d{6,20}");

就是使用后面的正则表达式来判断qq这个字符串是否符合规则。
所以写好了正则表达式,直接在对应的字符串上调用 m a t c h e s ( ) matches() matches()方法就好啦!

规则

Java 正则表达式_第1张图片
一个一个做演示,示例:

public class RegexDemo02 {
    public static void main(String[] args) {
        //public boolean matches(String regex):判断是否与正则表达式匹配,匹配返回true
        // 只能是 a  b  c
        System.out.println("a".matches("[abc]")); // true
        System.out.println("z".matches("[abc]")); // false

        // 不能出现a  b  c
        System.out.println("a".matches("[^abc]")); // false
        System.out.println("z".matches("[^abc]")); // true
		
		//匹配一个数字
        System.out.println("a".matches("\\d")); // false	
        System.out.println("3".matches("\\d")); // true
        System.out.println("333".matches("\\d")); // false

		//匹配英文、数字、下划线,也是只能匹配一个
        System.out.println("z".matches("\\w")); // true
        System.out.println("2".matches("\\w")); // true
        System.out.println("21".matches("\\w")); // false
        System.out.println("你".matches("\\w")); //false

		//匹配一个非单词的字符	\\W
        System.out.println("你".matches("\\W")); // true
        System.out.println("---------------------------------");
        //  以上正则匹配只能校验单个字符。

        // 校验密码
        // 必须是数字 字母 下划线 至少 6位
        System.out.println("2442fsfsf".matches("\\w{6,}"));
        System.out.println("244f".matches("\\w{6,}"));

        // 验证码 必须是数字和字符  必须是4位
        //[xxx]{n}:每个字符遵循[xxx]中的规则,一共n个字符,每个都要这样判断
        System.out.println("23dF".matches("[a-zA-Z0-9]{4}"));
        System.out.println("23_F".matches("[a-zA-Z0-9]{4}"));

		//[^_]就是除了_下划线的意思
        System.out.println("23dF".matches("[\\w&&[^_]]{4}"));
        System.out.println("23_F".matches("[\\w&&[^_]]{4}"));

    }
}

❗ ❗ [ a − z & & [ ( ˆ m − p ) ] ] [a-z \&\&[\^(m-p)]] [az&&[(ˆmp)]]的意思就是, [ a − z ] [a-z] [az]但是出去里面 [ m − p ] [m-p] [mp]的结果

你可能感兴趣的:(Java,正则表达式,java,开发语言)