Java正则表达式学习

Java正则表达式学习

1.概念

正则表达式,又称规则表达式。(英语:Regular Expression,常简写为regex)。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。支持正则表达式的有:PHP、Java、Python、JavaScript等。有了正则表达式写代码更加简洁,通常两三行代码就可以达到目的。


2.规则

1. 任意一个字符表示匹配任意对应的字符,如a匹配a,7匹配7-匹配-2. []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。
3. -在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中括号内[a-b]表示匹配26个小写字母中的任一个;[a-zA-Z]匹配大小写共52个字母中任一个;[0-9]匹配十个数字中任一个。
4. ^在中括号里面和外面含义不同,如在外时,就表示开头,如^7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如[^abc]表示匹配出去abc之外的其他任一字符。

5. .表示匹配任意的字符。
6. \d表示数字。
7. \D表示非数字。
8. \w表示字母、数字、下划线,[a-zA-Z0-9_]9. \W表示不是由字母、数字、下划线组成。
10.	[\u4e00-\u9fa5]匹配汉字

11. ?: 表示出现0次或1次。
12. +表示出现1次或多次。
13. *表示出现0次、1次或多次。
14. {n}表示出现n次。
15. {n,m}表示出现n~m次。
16. {n,}表示出现n次或n次以上。

3.用法

//要匹配的字符
	String str = "8";
//正则表达式
	String regex = "[0-9]";
// 方式一
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(str);
    System.out.println(m.matches());
//方式二
	System.out.println(Pattern.matches(regex, str));
//方式三
	System.out.println(str.matches(regex));

4.案例

案例一:

//qq邮箱:6-11数字@qq.com  过滤: 163.com  .cn
    String s="1071461302@qq.com";
    System.out.println(s.matches("\\d{6,11}@qq\\.com")); //true
    System.out.println(s.matches("\\d{6,11}@[a-z]{2}\\.[a-z]{3}")); //true

扩展:断言,预测,排除

(?!) 负向预查模式 意思为排除掉符合括号中的情况
对于断言的详细说明,可参考大神链接

案例二:
某网站要求注册的账号只能是:字母和数字,不能都是字母,不能都是数字,且要求字母开头,长度在6-12之间

String s="Aasdfas1sf";
String re1= "^[a-zA-Z](?![a-zA-Z]{5,11}$)[a-zA-Z0-9]{5,11}";
System.out.println(s.matches(re1));

案例三:
密码校验:8-20位,小写字母/大写字母/数字中的至少两种

String str="1231ab11";
String re= "(?![a-z]{8,20}$)(?![A-Z]{8,20}$)(?![0-9]{8,20}$)[a-zA-Z0-9]{8,20}";
System.out.println(str.matches(re));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

记或往

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

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

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

打赏作者

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

抵扣说明:

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

余额充值