前言
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
一、正则表达式
1、作用
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
2、特点
灵活性、逻辑性、功能强
用极简的表达方式控制复杂的字符串。
3、Java中正则表达式
Pattern p = Pattern.compile("[a-z]");
System.out.println(p.matcher("a"));
String regex = "[a]";
System.out.println("a".matches(regex));
4、语法规则
[内容限定]{长度限定}
1)范围字符限定
[a-z0-9],表 示内容可以是a到z的任意字母,0到9的任意数字。
2)取反限定
[^abc]表示内容不能是a或b或c
3)长度限定
{}来限定长度,分固定长度限定和范围长度确定。
固定长度:[a-z0-9]{5},表示长度必须是5
范围限定:[a-z]{2,8},表示长度在[2,8]区间;[a-z]{2,},表示长度在[2,+∞]
4)长度限定符号
? 等同 {0,1},零次或一次,[a-z]?
+ 等同 {1,},一次或多次,[a-z]+
* 等同{0,},零次或多次,[a-z]*
注:String类中的split方法传入的是regex,而在regex中,?、+、*都是特殊字符,所以要用特殊字符去拆分时,需转义,如String[] strs = "a".split("\\+");
5)预定义字符
通过预定义字符来简化内容限定的定义。
String regex = "\\d?";
6)组合限定
通过组合限定来定义更复杂的限定内容。
示例1:
必须以字母开头,最小不能低于6位,最大不能低于8位(密码要求)。
“[a-z]{1}\\w{5,8}”
示例2:
校验带有区号的电话号码
“\\d{3,4}-\{7,8}”,前面是区号,后面是电话号码。
7)常见正则表达式
注:更多简化内容,可以查JDK API 的pattern
二、在线Regex
总结
1)正则表达式
2)在线正则匹配
参考文献
[1] Java SE oldLu