正则表达式

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 格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值