JAVA中的正则表达式

正则表达式:用于处理字符串的一种特殊语法。可以方便快捷的拆分或者检验字符串的合法性。
以JAVA为例:java.util.regex.Pattern
此静态类没有构造方法,通过compile(String regex)方法来获得正则表达式的对象。调用match(String param)来判断参数字符串是否合法。
应用场景:检验字符串是否合法,比如密码校验,输入合法性校验(包括完整性和准确性)。

基础语法:正则表达式以-/+开头,可以省略,但是+已经有特殊含义了,需要转义为字面值方可使用。

认识下常见的字符:以某字符开头:^(写在字符表达式之前)

以某字符结尾:$(写在表达式之后)

数字:[0-9]

字母:[A-z] 按照ASCII数值,自己可以定义范围。

特定的字符:[xxxx]即可

中文:[\u4E00-\u9FA5]

对于想匹配指定字符个数的时候在表达式之后增加域表达式{0,1}此表达式的含义是之前的表达式的匹配字符个数最多为一个最少是0个,也可以写{1},就是说必须有一个

匹配[0,?]个大写字符: * 后面无需跟域表达式
任一字符:.(英文的点)后面可以跟域表达式,可以匹配中文

对于分组()本篇章不做解释,等另开一篇

对于基础表达式可定义为:[+/-] ^ [regex] {0,…}[+][regex]$
如以一个大写字母开头一个数字结尾的表达式为:^ [A-Z][0,9]
如以一个大写字母开头一个数字结尾,之间字符忽略
的表达式为:^ [A-Z] .+[0-9]$

如果你想设置为格式比如以2个大写字母开头的加上域
即可:^ [A-Z]{2}[0-9]$

特殊符号:+ 之前说要转义的原因就是这个符号的跟在表达式之后是表示之前的表达式的域为{1,?}至少有一个,最多多少个不确定

表达式组合:两个表达式是可以组合合并到一起的
[0-9A-z] 和 [0-9][A-z]是并不等价的分开写是有严格顺序的,比如2A可以但是A2就不行但是写在一起就是可以的[0-9A-z]它的含义是字母数字的组合都可以

字面值特殊符号:想要表达字面意思特殊符号是可以写在[]中的,作为关键字使用

举一个简单的例子:
在这里插入图片描述
但是出现了一个神奇的问题,按照我们的理解2个应该都是true才对,为啥第二个是false。经过我分析加测试发现是组合的问题:
直接说结论:正则表达式的匹配规则类似于&& 只要前面的条件满足了就判断下一个条件。
^ [FROM] [:A-Z0-9]+
这个表达式翻译过来就是以FROM 开头后面有多个字符允许为:数字或者大写字母。
判断顺序为1:FROM 开头
2:多个字符数字或者大写字母或者:

写成代码就是 (IS FROM)&&((大写字母)||(特殊符号:))

在这里插入图片描述
所以当我们写成^ [FROM:][A-Z0-9]+这句话是什么意思呢?根据表达式组合我们可以得到结论:

以大写字母FROM开头或者特殊字符:开头,后接多个字符或者数字的组合。而得到的答案也正是如此。如下图
在这里插入图片描述
正则表达式用于处理字符串十分的方便,需要多多练习,好了,本次就说到这里了,谢谢您的耐心阅读,如有不对或者不清楚的地方,欢迎在评论区留言,看到后我会修改的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值