一、引言
什么是正则表达式:可以使用单个字符串表示的规则。最通用的正则表达式校验电子邮箱的字符串为:^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$,而电子邮箱也是一个字符串,从而实现一个字符串对另一个字符串的匹配校验。在实际开发中,正则表达式通常被用来检查某些字符串是否合规,例如:用户名、密码、手机号……。
二、正则表达式的语法规则
1. API文档中:java.util.regex.Pattern 实现的接口:Serializable
2. 正则表达式区分大小写字母。
3. 字符与其含义
字符 | 含义 | 例子 |
x | 字符x | “a”,需要匹配的字符串内容就是“a” |
\ | 转义字符 | “\t” 制表符, “\n” 换行符 , “\r” 回车符,“\\” 反斜杠\ |
[abc] | 字符a|b|c其中一个 | “a” |
[^abc] | 上面取反 | “t” |
[a-zA-Z] | 一个大写或小写字母 | “a” |
[0-9] | 一个数字 | “0” |
[a-zA-Z_0-9] | 一个字母或数字或“_” | “9” |
\d | 预定义字符类 [0-9] | “0” |
\w | 预定义字符类 [a-zA-z_0-9] | “y” |
^ | 行的开头 | ^[abc][0-9]$ 需要匹配的内容从[abc]这个位置开始 |
$ | 行的结尾 | 需要匹配的内容以[0-9]结束 |
\b | 边界匹配器-单词边界 | “\b[abc]\b”a|b|c的左右两边需要的是非单词字符[a-zA-Z_0-9] |
x? | x出现一次或没有出现 | “a?”一个字符a,或一个a都没有 |
x* | x出现多次或没有出现 | “a*”多个字符a,或一个a都没有 |
x+ | x出现一次或多次 | “a+”一个字符a或多个字符a |
x{n} | x出现恰好n次 | “a{3}”字符a出现3次 |
x{n,} | x至少出现n次 | “a{3,}”字符a至少出现3次 |
x{n,m} | x至少出现n次,但不超过m次 | “a{3,6}”字符a至少出现3次,但不超过6次 |
三、正则表达式规则匹配练习
1. [0-9]{6,12} 长度为6位到12位的数字
2. 1[34578][0-9]{9} 第1位为1,第2位为3或4或5或7或8,后面还有9个数字
3. a*b 多个a后面跟着b结尾,或者a没出现以b结尾 “aaab”true “abc”false
四、String类中设计正则表达式的常用方法
1. boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式
2. String split(Stringregex) 根据给定正则表达式的匹配拆分此字符串,拆分后放在String[]数组中
3. String replaceAll(String regex,Stringreplacement)使用给定replacement替换此字符串所有匹配给定的正则表达式的子字符串
Demo:
结果:
五、数字相关正则表达式
1. 匹配正整数:“\\d+”
2. 匹配正小数:“\\d+\\.\\d+”
3. 匹配负整数:“-\\d+”
4. 匹配负小数:“-\\d+\\.\\d+”
5. 匹配保留两位小数的正数:“\\d+\\.\\d{2}“
9. 匹配保留1-3位小数的正数:“\\d+\\.\\d{1,3}“