正则表达式(Java)

正则表达式

介绍:实际应用中,我们经常会用到需要匹配、查找、替换、判断字符串的情况,正则表达式是解决这类问题的主要手段。正则表达式是一种字符串的语法规则,是一种可以用于模式匹配和替换的规则,主要用于文本和字符串处理。

1、元字符

元字符写法意义
..任何一个字符
\d\\d0~9的任何一个数字
\D\\D任何一个非数字字符
\s\\s空格类字符,‘\t’、‘\n’、‘\x0B’、‘\f’、‘\r’
\S\\S非空格类字符
\w\\w可用于标识符的字符(不包含美元符号)
\W\\W不能用于标识符的字符
\p{Lower}\\p{Lower}<小写字母[a-z]
\p{Upper}\\p{Upper}大写字母[A-Z]
\p{ASCII}\\p{ASCII}ASCII字符
\p{Alpha}\\p{Alpha}字母
\p{digit}\\p{digit}数字字符[0-9]
\p{Alnum}\\p{Alnum}字母或数字
\p{Punct}\\p{Punct}标点符号
\p{graph}\\p{graph}可视字符,\p{Alnum}\p{Punct}
\p{Print}\\p{Print}可打印字符,\p{graph}
\p{Blank}\\p{Blank}空格或制表符
\p{Cntrl}\\p{Cntrl}控制字符[\x00-\x1F\x7F]



例:使用正则表达式判断给定的字符串是否符合格式:大写字母+3个小写字符+3个数组

public class Main{ 
    public static void main(String[] args) {
        String regex = "\\p{Upper}\\p{Lower}\\p{Lower}\\p{Lower}\\d\\d\\d";

        String[] msg = {"ABCd001", "Abcd002"};

        for (int i = 0; i < msg.length; i++)
            System.out.println(msg[i] + (msg[i].matches(regex) ? "合法" : "不合法"));

    }
}

结果:
这里写图片描述


2、” [ ] ” 符

方括号元字符含义
[abcde]匹配a、b、c、d、e中的任意一个字符
[a-h]匹配a-h之间的任意一个字符
[^fgh]不与f、g、h中的任意一个字符匹配
a-d[m-p]代表a-d,或m-p中的任何一个字符(并)
a-z&&[def]代表d、e、f中的任意一个字符(交)
a-f&&[^bc]代表a、d、e、f(差)

3、限定符

带限定符号的模式含义
X?X出现0次或一次
X*X出现0次或多次
X+X出现1次或多次
X{n}X出现n次
X{n,}X至少出现n次
X{n,m}X出现n至m次
XYX后跟Y
X | YX或Y



例:通过正则表达式判断手机号是否合法
说明:手机号码前三位有13+任意数字,15+0、3、6~9任意一位,18+6、8、9任意一位;后8位为任意数字。

public class Main{ 
    public static void main(String[] args) {
        String regex = "(13\\d|15[036-9]|18[689])\\d{8}";

        String[] msg = {"987654321", "12345678901", "18612345678"};

        for (int i = 0; i < msg.length; i++)
            System.out.println(msg[i] + (msg[i].matches(regex) ? "合法" : "不合法"));

    }
}

结果:
这里写图片描述


ps:更复杂的还要多练习才能掌握哦 ^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值