【Java基础】Java正则表达式的使用



一、正则表达式规则

1.字符类(只匹配一个字符)

[abc]abc中的一个
[^abc]除了abc外的任意一个
[a-zA-Z],[a-z[A-Z]]a到z或A-Z中的一个
[a-c&&[bdf]]a到c与bdf交集中的一个,即b
[a-e&&[^f-g]]a到e和非f到g的交集

2.预定义字符(只匹配一个字符)

.任意字符
\d任意数字[0-9]
\D非数字[^0-9]
\s空白字符
\S非空白字符
\w英文字母,数字或下划线
\W等同于[^\w],表示一个非单词字符

3.数量词

X?X出现一次或多次
X*X出现零次或多次
X+X出现一次或多次
X{n}X出现n次
X{n,}X出现至少n次
X{n,m}X出现至少n次,最多m次

二、使用方法

调用字符串的matches方法
1.

public class Test {
    public static void main(String[] args) {
        String s = "abc";
        System.out.println(s.matches("[a-z][a-z][a-z]"));
    }
}
true
public class Test {
    public static void main(String[] args) {
        String s = "abc123456";
        System.out.println(s.matches("[a-z]{3}[0-9]{6}"));
    }
}
true

3.在使用预定义字符时需要在前面加一个转义字符\,表示有一个\。

public class Test {
    public static void main(String[] args) {
        String s = "abc123456";
        System.out.println(s.matches("\\w{9}"));
    }
}
true

也可以将正则表达式中的内容单独作为一个字符串,在使用正则表达式时直接将字符串代入。

public class Test {
    public static void main(String[] args) {
        String s = "abc123456";
        String s1 = "\\w{9}";
        System.out.println(s.matches(s));
    }
}

三、例题演示

1.检验一个手机号码是否正确(以数字1开头,长度为11)

public class Test {
    public static void main(String[] args) {
        String s = "12345678910";
        System.out.println(s.matches("[1][0-9]{10}"));
    }
}

2.校验邮箱格式是否正确(开头不能为0,@的左边可以是字母,数字或下划线,@右边到点.之间可以由字母或数字组成,点的右边为字母,如:a12cd_efg@qwe123.com)

public class Test {
    public static void main(String[] args) {
        String s = "a12cd_efg@qwe123.com";
        System.out.println(s.matches("[\\w&&[^0]]\\w{1,}[@][\\w&&[^_]]{1,}[\\.][a-z]{1,}"));
    }
}

字符" . " 为什么表示为"\ \ ." 。
1.在正则表达式中, “.“有特殊意思,所以匹配”.“时要用转义字符”\ “,所以在正则表达式中匹配”.“的表达式是” \ .”, 而在Java中,\又是特殊字符, 所以还要进行转义, 所以最终变成"\ \ ."
2.\ \ .实际上被转义为两次,\ \在java中被转换为一个’ \ ‘字符,然后’ \ .‘被传给正则,.表示对点字符进行转义,使.就表示字符’.',而不使用它在正则中的特殊意义
(来自百度搜索,准确性不能保证)

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值