讲解

  • 概述: 正则表达式其实就是一个匹配规则,用来替换之前复杂的if结构判断
  • 在Java中,我们经常需要验证一些字符串,是否符合规则, 例如:校验qq号码是否正确,手机号码是否正确,邮箱是否正确等等。那么如果使用if就会很麻烦, 而正则表达式就是用来验证各种字符串的规则。它内部描述了一些规则,我们可以验证用户输入的字符串是否匹配这个规则。
  • 先看一个不使用正则表达式验证的例子:下面的程序让用户输入一个QQ号码,我们要验证:
    • QQ号码必须是5–15位长度
    • 而且必须全部是数字
    • 而且首位不能为0
    • 在这里插入代码片
public class Test {
    public static void main(String[] args) {
        /*
            下面的程序让用户输入一个QQ号码,我们要验证:
                - QQ号码必须是5--15位长度
                - 而且必须全部是数字
                - 而且首位不能为0
         */
        System.out.println(checkQQ1("123456"));// true
        System.out.println(checkQQ1("1234"));// false
        System.out.println(checkQQ1("12345a567"));// false
        System.out.println(checkQQ1("012345"));// false
    }
 

    /**
     * 校验输入的qq号码是否符合规则
     * @param qq
     * @return
     */
    public static boolean checkQQ1(String qq) {
        // qq号码长度不是5-15位,直接返回false
        if (qq.length() < 5 || qq.length() > 15) {
            return false;
        }

        // 如果qq号码中有任何一位不是数字,就直接返回false
        for (int i = 0; i < qq.length(); i++) {
            // 获取每一位字符
            char c = qq.charAt(i);
            // 判断
            if (c < '0' || c > '9') {
                return false;
            }
        }

        // 如果首位是0,就直接返回false
        if (qq.charAt(0) == '0') {
            return false;
        }

        // qq号码合法,直接返回true
        return true;
    }
}

正则表达式代码

public class Demo {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入你的QQ号码:");
		String qq = sc.next();
		
		System.out.println(checkQQ2(qq));
	}
	//使用正则表达式验证
	private static boolean checkQQ2(String qq){
		String regex = "[1-9]\\d{4,14}";//正则表达式
		return qq.matches(regex);
	}
}

正则表达式-字符类

  • 语法示例:[] 表示匹配单个字符 ^ 取反 - 范围
    1. [abc]:代表a或者b,或者c字符中的一个。
    2. [^abc]:代表除a,b,c以外的任何字符。
    3. [a-z]:代表a-z的所有小写字符中的一个。 左右包含
    4. [A-Z]:代表A-Z的所有大写字符中的一个。
    5. [0-9]:代表0-9之间的某一个数字字符。
    6. [a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符。
    7. [a-dm-p]:a 到 d 或 m 到 p之间的任意一个字符。

正则表达式-逻辑运算符

  • 语法示例:
    1. &&:并且
    2. | :或者

正则表达式-预定义字符

  • 语法示例:
    1. “.” : 匹配任何字符。如果要表示一个字符点,那么就得使用\.
    2. “\d”:任何数字[0-9]的简写;
    3. “\D”:任何非数字[^0-9]的简写;
    4. “\s”: 空白字符:[ \t\n\x0B\f\r] 的简写
    5. “\S”: 非空白字符:[^\s] 的简写
    6. “\w”:单词字符:[a-zA-Z_0-9]的简写
    7. “\W”:非单词字符:[^\w]

正则表达式-数量词

  • 语法示例:
    1. X? : 0次或1次
    2. X* : 0次到多次
    3. X+ : 1次或多次
    4. X{n} : 恰好n次
    5. X{n,} : 至少n次,包含n
    6. X{n,m}: n到m次(n和m都是包含的)

更多推荐

正则表达式判断