正则表达式
来源:互联网 发布:网络科技时代 编辑:程序博客网 时间:2024/06/03 19:32
在程序设计的过程中,经常需要对输入的数据格式进行检查,这时就会用到正则表达式,匹配正则表达式则数据格式正确,否则格式错误。
正则表达式(Regex)表达式正确的使用规则:
◆ 1,字符串匹配◆ 2,指定字符串替换 ◆ 3,指定字符串查找◆ 4,字符串分割
判断是否符合正则表达式的方法
为了检查输入的数据是否满足某种格式,从JDK1.4开始使用String类的matches()方法进行判断。
boolean matches(String regex)
◇ regex:指定的正则表达式。
◇ 返回值:返回boolean类型。
该方法用于告知当前字符串是否匹配参数regex指定的正则表达式。返回值是boolean类型,如果当前字符串与正则表达式匹配,则该方法返回true,否则返回false。
正则表达式中的两种形式的元字符
正则表达式由一些含有特殊意义的字符组成的字符串,这些含有特殊意义的字符称为元字符。
正则表达式中的元字符
不用方括号的字符连接。
在正则表达式中,”.“代表任何一个字符,因此在正则表达式中如果想使用普通意义的点字符”.“,必须使用转义字符”\“。
Demo
在项目中创建Decision类,判断指定字符串是否合法,要求字符串由7个字符组成,并且第一位必须是大写字母,2~4位必须是小写字母,后3位必须是数字字符,并在控制台输出结果。
public class Decision { public static void main(String[] args) { //需要进行判断的字符串 String s="Ajik432"; String s1="ajik432"; //字符串合法的规则 String s2="\\p{Upper}\\p{Lower}\\p{Lower}\\p{Lower}\\p{Digit}\\p{Digit}\\p{Digit}"; //判断字符串变量是否合法 boolean s4=s.matches(s2); boolean s5=s1.matches(s2); //输出结果 System.out.println(s+"是合法数据吗?"+s4); System.out.println(s1+"是合法数据吗?"+s5); }}
结果:
Ajik432是合法数据吗?true
ajik432是合法数据吗?false
方括号中的元字符
在正则表达式中还可以用方括号把多个字符括起来,方括号中各种正则表达式代表不同的含义。
Demo
在项目中创建CheckHandSetNum类,在主方法中创建String对象,使用正则表达式对手机号码的合法性进行验证,在使用正则表达式时需要用到一些元字符和方括号中的元字符。
public class CheckHandSetNum { public static void main(String[] args) { //定义要验证的号码 String telephone1="11024588795"; String telephone2="15044268138"; System.out.println(check(telephone1)); System.out.println(check(telephone2)); } public static String check(String handset){ //定义正则表达式 String regex="1[3,5,7,8]\\d{9}$"; //测试匹配结果 if(handset.matches(regex)){ return handset+"\n是合法的手机号"; }else{ return handset+"\n不是合法的手机号"; } }}
结果:
11024588795
不是合法的手机号
15044268138
是合法的手机号
正则表达式的限定符
在使用正则表达式时,如果需要某一类型的元字符多次输出,逐个输入就相当麻烦,这时可以使用正则表达式的限定元字符来重复次数。
数量表示:
如上个例子中的
String s2="\\p{Upper}\\p{Lower}\\p{Lower}\\p{Lower}\\p{Digit}\\p{Digit}\\p{Digit}";
可以由限定符写成
String s2="\\p{Upper}\\p{Lower}{3}\\p{Digit}{3}";
结果是相同的,但是书写就会方便很多。
Demo:
在项目中创建Judge类,在方法中创建String对象,实现使用正则表式来判断指定的变量是否是合法的E-mail地址。
public class Judge { public static void main(String[] args) { //正则表达式,定义邮箱格式 String regex="\\w{0,}\\@\\w{1,}\\.{1}\\w{0,}"; //定义字符串 String str1="aaa@.com"; String str2="aaaaa"; String str3="aaaaa@111.com"; //判断字符串是否符合规则 if(str1.matches(regex)){ System.out.println(str1+"是一个邮箱地址"); } if(str2.matches(regex)){ System.out.println(str2+"是一个邮箱地址"); } if(str3.matches(regex)){ System.out.println(str3+"是一个邮箱地址"); } else{ System.out.println("都不是邮箱地址"); } }}
结果:
aaaaa@111.com是一个邮箱地址
逻辑运算符:
Demo
在项目中创建CheckIPAdress类,判断输入的IP地址每个字符是否符合匹配IP地址的正则表式,每个字符串都匹配是合法的IP地址。
public class CheckIPAdress { public static void main(String[] args) { //创建判定的IP String ip1="255.255.255.255"; String ip2="192.168.5.6"; System.out.println(matches(ip1)); System.out.println(matches(ip2)); } public static String matches(String text){ if(text!=null && !text.isEmpty()){ //定义正则表达式 String regex="^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\." +"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\." +"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\." +"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$"; //测试匹配结果 if(text.matches(regex)){ return text+"\n是合法的IP"; }else{ return text+"\n不是合法的IP"; } } return "请输入要验证的IP地址!"; }}
结果:
255.255.255.255
是合法的IP
192.168.5.6
是合法的IP
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 讲讲多态
- spring自定义注解AOP实现
- Window builder在线安装
- ORACLE数据库-数据定义语言DDL的简单介绍
- 【PAT1018】Public Bike Management
- 正则表达式
- mac python Pycharm环境配置
- 基于容器原理(docker、lxc、cells)的Android 双系统设计概要
- FastDFS分布式文件系统
- java-泛型
- 为什么英语学习得不到我们想要的效果?
- Spark java API 单词计数 ----直接在本地IDEA中运行
- ssh “id_rsa 、id_rsa.pub、known_hosts”替换中出现的问题
- 数据结构实验之栈二:一般算术表达式转换成后缀式(栈)