一、基本正则表达式
1.正则表达式简介
·就是记录文本规则的代码
--预定义字符
- [] 表示一个字符,括号中的字符,[abc],a,b,c中任意一个字符
- ^ 表示非, 如[^abc] 除了a,b,c的任意字符,注:在[]中表示非,
- - 表示范围,如[a-zA-Z0-9], 表示a~z、A~Z、0~9中的任意一个字符
- && 表示并且,与。如[a-z&&[^bc]],除了b,c意外的任意一个字符
- 表示任意一个字符,什么都行,各国文字、符号等
- \d 表示任意一个数字字符,相当于[0-9]
- \w 表示单词字符,相当于[a-zA-Z0-9]
- \s 表示空白字符,相当于[\t\n\x0B\f\r]
- \D 表示非数字字符
- \W 表示非单词字符
- \S 表示非空白字符
---数量词
- ? 表示 0个或1个。 X?,0或1个X
- * 表示0个或任意多个
- + 表示1个到任意多个(大于等于1)
- {n} 表示n个。 X{n},表示n个X
- {n,}表示n个到任意多个(大于等于n个)
- {n,m} 表示n个到m个,必须 n<m
- \ 表示转义。如要出现. 需要用 \. ·
2.分组 "()"
- () 表示括号中的部分作为整体出现,
3."^"和"$"
- ^ 在正则表达式开头表示已后面的为开头
- $ 在表达式末尾,表示已前面的内容结尾
-- ^[0-9]{11}$ , 匹配位数字
4.总结
- 正则表达式只关心格式是否正确,不关心内容是否有效
- java中用字符串表示正则表达式
二、String正则API
1.matches方法
-如
String reg = "[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9]+)+"; //此处\.处会报错,说.不需要转义
String reg = "[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9]+)+" //正确
使用:
//验证是否满足格式要求,此处匹配一个邮箱
String mail = 879@qq.com
boolean math = mail.mathches(reg);
mathches是全匹配,默认开头加了^,不是部分匹配
要想部分匹配,开头用 .*
//匹配身份证号
\d{15}(\d{2}[0-9xX])?
String reg = "\\d{15}(\\d{2}[0-9xX])?";
2.split方法
- 将字符串按照特定的分隔符拆分成字符串数组
String[] split(String regex) | 参数regex为正则表达式, 以regex所表示的字符串为分隔符(不包括分隔符),将字符串拆分成字符串数组
- ",,123",split(",") 则会拆出空字符串
- "123,,,," split(",") 则不会拆出空字符串, 这时坑的地方
- 在结尾就不会出拆出空字符串,注意:不是null! 在中间或开头都会拆除空字符串
3.replaceAll方法
String replaceAll(String regex, String replacement) | 将字符串中匹配正则表达式regex的字符串替换成replacement