Java-正则表达式

1 正则表达式-字符类

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之间的任意一个字符。

8.[a-z&&[def]]:代表a-z和def的交集,实际为def

9.[a-z&&[^def]]:代表a-z和非def的交集,等同于a-cg-z

示例代码如下:

public class RegexDemo1 {
    public static void main(String[] args) {

        //1.[abc]:代表a 或b 或c字符中的一个。
        System.out.println("a".matches("[abc]"));//true
        System.out.println("d".matches("[abc]"));//false

        //2.[^abc]:代表除了a b c以外的任何字符。
        System.out.println("a".matches("[^abc]"));//false
        System.out.println("d".matches("[^abc]"));//true
        //3.[a-z]:代表a-z的所有小写字符中的一个。
        System.out.println("z".matches("[a-z]"));//true
        System.out.println("A".matches("[a-z]"));//false
        System.out.println("1".matches("[a-z]"));//false

        //4.[A-Z]:代表A-Z的所有大写字符中的一个。
        System.out.println("A".matches("[A-Z]"));//true
        System.out.println("a".matches("[A-Z]"));//false
        //5.[0-9]:代表0-9之间的某一个数字
        System.out.println("1".matches("[0-9]"));//true
        System.out.println("11".matches("[0-9]"));//false
        //6.[a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符
        System.out.println("c".matches("[a-zA-Z0-9]"));//true
        System.out.println("D".matches("[a-zA-Z0-9]"));//true
        System.out.println("8".matches("[a-zA-Z0-9]"));//true
        System.out.println(".".matches("[a-zA-Z0-9]"));//false
        //7.[a-dm-p]:代表a到d或m到p之间的任意一个字符。
        System.out.println("c".matches("[a-dm-p]"));//true
        System.out.println("e".matches("[a-dm-p]"));//false

        //8.[a-z&&[def]]:代表a-z和def的交集,实际为def
        System.out.println("a".matches("[a-z&&[def]]"));//false
        System.out.println("e".matches("[a-z&&[def]]"));//true
        System.out.println("9".matches("[a-z&&[0-8]]"));//false

        //9.[a-z%&&[^def]]:代表a-z和非def的交集,等同于a-cg-z
        System.out.println("b".matches("[a-z&&[^def]]"));//true
        System.out.println("e".matches("[a-z&&[^def]]"));//false
    }
}

2 正则表达式-逻辑运算符

1. &&:并且

2. | :或者

3. \:转义字符

代码实例:

public class Demo {
	public static void main(String[] args) {
		String str = "had";
		
		//1.要求字符串是小写辅音字符开头,后跟ad
		String regex = "[a-z&&[^aeiou]]ad";
		System.out.println("1." + str.matches(regex));
		
		//2.要求字符串是aeiou中的某个字符开头,后跟ad
		regex = "[a|e|i|o|u]ad";//这种写法相当于:regex = "[aeiou]ad";
		System.out.println("2." + str.matches(regex));
	}
}

3 正则表达式-预定义字符

1.".":匹配任何字符

2."\d":匹配数字[0-9]的简写

3 "\D":匹配非数字[^0-9]的简写

4 "\s":空白字符:空格、制表符等

5."\S":非空白字符

6."\w":单词字符:[a-zA-Z_0-9]的简写,包括下划线

7."\W":非单词字符

示例代码

public class RegexDemo2 {
    public static void main(String[] args) {

        System.out.println("1------------------");
        // 1.".":匹配任何字符
        System.out.println("你".matches("."));//true
        System.out.println("你".matches(".."));//false 一个.只匹配一个字符
        System.out.println("你1".matches(".."));//true
        System.out.println("2------------------");
        // 2."\d":匹配数字[0-9]的简写
        System.out.println("3".matches("\\d"));//true
        System.out.println("a".matches("\\d"));//false
        System.out.println("33".matches("\\d"));//false
        System.out.println("33".matches("\\d\\d"));//true
        // 3 "\D":匹配非数字[^0-9]的简写
        System.out.println("3------------------");
        System.out.println("你".matches("\\D"));//true
        System.out.println("1".matches("\\D"));//false
        // 4 "\s":空白字符:空格、制表符等
        System.out.println("4------------------");
        System.out.println(" ".matches("\\s"));//true
        System.out.println("a".matches("\\s"));//true
        // 5."\S":非空白字符
        System.out.println("5------------------");
        System.out.println(" ".matches("\\S"));//false
        System.out.println("你".matches("\\S"));//true
        // 6."\w":单词字符:[a-zA-Z_0-9]的简写,包括下划线
        System.out.println("6------------------");
        System.out.println("_".matches("\\w"));//true
        System.out.println("-".matches("\\w"));//false
        System.out.println("1".matches("\\w"));//true
        System.out.println("A".matches("\\w"));//true
        // 7."\W":非单词字符
        System.out.println("7------------------");
        System.out.println("我".matches("\\W"));//true
        System.out.println("_".matches("\\W"));//false
        System.out.println("-".matches("\\W"));//true
    }
}

4 正则表达式-数量词

1.X?:0次或1次

2.X*:0次或多次

3.X+:1次或多次

4.X{n}:正好n次

5.X{n,}:至少n次

6.X{n,m}:n到m次(包含n和m)

示例代码

public class RegexDemo3 {
    public static void main(String[] args) {
        //必须是数字 字母 下划线 至少6位
        System.out.println("1--------");
        System.out.println("AD111_1_2".matches("\\w{6,}"));//true
        System.out.println("a1d_".matches("\\w{6,}"));//false

        //必须是数字和字符,必须是4位
        System.out.println("2--------");
        System.out.println("1a2c".matches("[\\w&&[^_]]{4}"));//true
        System.out.println("12as".matches("\\w{4}"));//true
        System.out.println("12asdd".matches("\\w{4}"));//false

        //必须是数字和字符,4-6次
        System.out.println("3--------");
        System.out.println("12as".matches("\\w{4,6}"));//true
        System.out.println("123456".matches("\\w{4,6}"));//true
        System.out.println("111".matches("\\w{4,6}"));//false
    }
}

5 练习

public class RegexDemo4 {
    public static void main(String[] args) {
        //1 验证手机号
        //1开头,第二位3-9,后面9位是0-9任意数字
        String phone_regex = "1[3-9]\\d{9}";
        System.out.println("15702153685".matches(phone_regex));//true
        System.out.println("25702153685".matches(phone_regex));//false
        System.out.println("12702153685".matches(phone_regex));//false
        System.out.println("147021536851".matches(phone_regex));//false
        //邮箱号码
        //3232323@qq.com  dlei0009@163.com dlei0009@pci.com.cn
        //思路:
        //在书写邮箱号码正则的时候需要把正确的数据分为三部分
        //第一部分:@的左边 \\w+
        //      任意的字母数字下划线,至少出现一次就可以了
        //第二部分:@ 只能出现一次
        //第三部分:
        //      3.1         .的左边[\\w&&[^_]]{2,6}
        //                  任意的字母加数字,总共出现2-6次(此时不能出现下划线)
        //      3.2         . \\.
        //      3.3         大写字母,小写字母都可以,只能出现2-3次[a-zA-Z]{2,3}
        //      我们可以把3.2和3.3看成一组,这一组可以出现1次或者两次
        String regex3 = "\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
        System.out.println("3232323@qq.com".matches(regex3));//true
        System.out.println("zhangsan@itcast.cnn".matches(regex3));//true
        System.out.println("dlei0009@163.com".matches(regex3));//true
        System.out.println("dlei0009@pci.com.cn".matches(regex3));//true

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geminigoth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值