1.正则表达式的引出案例
案例:让用户输入以下注册信息,并根据要求对输入信息进行验证。
(1) 用户名:长度为3~8位的字母组成(必须包含大小写)。
(2)密码:长度为6位的字母和数字组成 电话号码:长度必须是11位数字,第一个字符为 ‘1’
(3)生日:格式为 1999-04-28
分析:可以利用String中的方法进行验证
缺点:仅靠String目前提供的方法完成验证相对比较繁琐。
解决方案:JDK4.0之后,Java中提供了正则表达式,专门用于字符串的格式校验
2. 正则表达式的概念和特点
2.1 概念
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
给定个正则表达式和另个字符串,我们可以达到如下的目的:
(1) 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
(2)可以通过正则表达式,从字符串中获取或替换我们想要的特定部分。
2.2特点
(1)灵活性、逻辑性和功能性非常的强;
(2)可以迅速地用极简单的方式达到字符串的复杂控制。
3.正则表达式的常用规则
3.1字符类
x 字符 x
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[0-9] 表示可以出现0~9中任意一个数字
[^0-9] 表示除了0-9中任意的数字,其他字符都可以
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-zA-Z_0-9] 小写字母大写字母数字都可以
3.2 预定义字符
\d 数字 [0-9]
\D 非数字 [^0-9]
\w 单词字符 [a-zA-Z_0-9]
\W 非单词字符 [^\w]
3.3 数量词
X? X, 一次或一次也没有 举例:a?
X* X, 零次或多次
X+ X, 一次或多次
X{n} X, 恰好 n 次 a{5}
X{n,} X, 至少 n 次 a{5,}
X{n,m} X, 至少 n 次,但是不超过 m 次 a{4,14}
4.String类对正则表达式的支持
(1)public boolean matches(String regex)
:字符串匹配,参数为正则表达式
注意:此方法为常用的字符串格式验证方法
案例:验证字符串是否由数字、字母组成并且以字母为开头。
String reg="^[a-zA-Z][a-zA-Z0-9]+";
或是 String reg="^\\D[a-zA-Z0-9]+"
;
(2)public String replaceAll(String regex,String str)
:符合格式的内容被str替代
案例:将字符串所有的数字替换成”_”。
String str=”bai13zhi26jiao66yu8”.replaceAll(“\\d”,”_”)
;
(3)public String[] split(String regex):
以某种格式对当前对象进行拆分
案例:将字符串以数字做拆分。
String[] rs= “bai13zhi26jiao66yu8”.split(“\\d+”);
5.验证功能
boolean matches(String regex):
告知此字符串是否匹配给定的正则表达式。
6.分割功能
String[] split(String regex):
根据给定正则表达式的匹配拆分此字符串 。
7. 替换功能
String replaceAll(String regex, String replacement)
:使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串
8.正则表达式的简单练习
让用户输入以下注册信息,并根据要求对输入信息进行验证。
(1)用户名:长度为3~8位的字母组成(必须包含大小写)。
(2)密码:长度为 6 位的字母和数字组成
(3)电话号码:长度必须是11位数字,第一个字符为 ‘1’
(4)生日:格式为 1999-04-26
(5)地址:长度不能少于2位。
(6)邮箱:多位数字或是字母@XX.com.cn 格式