【JavaEE进阶系列 | 从小白到工程师】正则表达式的语法使用
文章目录
- 💨更多相关知识👇
- 一、正则表达式的语法
- 🍂范围匹配 [ ]
- 🌟代码演示
- 🍂预定义字符
- 🌟代码演示
- 🍂数量词
- 🌟代码演示
- 二、正则表达式的作用
- 三、String类中支持正则表达式的方法
- 四、案例
- ⭐身份证案例
- ⭐邮箱案例
- 🌟代码演示
- 作者:KJ.JK
💨更多相关知识👇
💖Spring中的bean的配置、作用范围、生命周期详细描述及使用(XML版上篇)
💖异常处理与解决方案详解上篇
💖异常处理与解决方案详解下篇
💖Math类与System类的常用方法使用
💖JavaEE中的静态方法定义、方法重载要求、return作用详解
💖List接口的常用方法,精华总结
💖JavaEE中的Stream流的常用方法
💖JavaEE中的Stream流知识点使用,精华总结,一文直接上手
🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
🍂个人博客首页: KJ.JK
欢迎大家点赞👍收藏💖评论💬关注🔒
💖源码获取 | 💻学习交流 | 🤝商务合作 | 💨私信作者
💨推荐一款实用的模拟面试、刷题练习算法的神器、适用于所有的程序猿👉点击开始免费刷题,跟着博主走上巅峰💪
一、正则表达式的语法
🍂范围匹配 [ ]
[abc]:
匹配abc中任意一个字符
[a-z]:
匹配小写字母a-z中的一个
[A-Z]:
匹配大写字母A-Z中的一个
[0-9]:
匹配数字0-9中的一个
组合匹配:
[a-zA-Z0-9]:
匹配a-z或者A-Z或者0-9之间的任意一个字符
[a-dm-p]:
匹配a-d或m-p之间的任意一个字符
排除:
[^abc]:
匹配除a、b、c之外的任意一个字符 //^在中括号里面表示非的意思
[^a-z]:
匹配除小写字母外的任意一个字符
🌟代码演示
public class Demo {
public static void main(String[] args) {
/*
1.范围匹配 [] 一个中括号表示匹配一个
[abc]:匹配abc中任意一个字符。
[a-z]:匹配小写字母a-z中的一个。
[A-Z]:匹配大写字母A-Z中的一个。
[0-9]:匹配数字0-9中的一个。
组合匹配:
[a-zA-Z0-9]:匹配a-z或者A-Z或者0-9之间的任意一个字符。
[a-dm-p]: 匹配a-d或m-p之间的任意一个字符。
排除:
[^abc]:匹配除a、b、c之外的任意一个字符。
[^a-z]:匹配除小写字母外的任意一个字符。
*/
//匹配abc中任意一个字符。
System.out.println("A".matches("[abc]")); //false
System.out.println("ab".matches("[abc]")); //false
System.out.println("a".matches("[abc]")); //true
System.out.println("---------------------------------------");
--------------------------------------------------------------------------------------------------
//[a-z]:匹配小写字母a-z中的一个
System.out.println("B".matches("[a-z]")); //false
System.out.println("b".matches("[a-z]")); //true
System.out.println("---------------------------------------");
----------------------------------------------------------------------------------------------------
//[a-zA-Z0-9]:匹配a-z或者A-Z或者0-9之间的任意一个字符
System.out.println("我".matches("[a-zA-Z0-9]")); //false
System.out.println("0".matches("[a-zA-Z0-9]")); //true
System.out.println("0".matches("[a-zA-Z0-9]")); //true
System.out.println("f".matches("[a-zA-Z0-9]")); //true
System.out.println("A".matches("[a-zA-Z0-9]")); //true
//这里加了一个空格,匹配范围就会更改为[a-z A-Z0-9]:
// 匹配a-z或者空格或者A-Z或者0-9之间的任意一个字符
System.out.println(" ".matches("[a-z A-Z0-9]")); //true
------------------------------------------------------------------------------------------------------
System.out.println("------------------------");
System.out.println("A".matches("[^A-Z]")); //false
System.out.println("a".matches("[^A-Z]")); //true
System.out.println("0".matches("[^A-Z]")); //true
}
}
🔥系列热门专栏🔥:
⚡《JavaEE进阶序列 | 从小白到工程师》系列文章⚡
⚡《JavaEE项目实战》系列文章⚡
⚡《JavaSwing项目合集》系列文章⚡
⚡《数据分析中的pandas》系列文章⚡
🍂预定义字符
".":
匹配一个任意字符
"\d":
匹配一个数字字符,相当于[0-9]
"\D":
匹配一个非数字,相当于[^0-9]
"\s":
匹配一个空白字符
"\S":
匹配一个非空白字符
"\w":
匹配一个单词字符,包括大小写字母,数字,下划线,相当于 [a-zA-Z0-9_]
"\W" :
匹配一个非单词字符
^ :
匹配字符串的开始(在集合字符里[^a]表示非(不匹配)的意思
$ :
匹配字符串的结束
注意:有\的记得加\,变成\\,表转义
如: \\d \\D \\s \\S \\w \\W
🌟代码演示
public class Demo {
/*
2.预定义字符
“.” : 匹配一个任意字符
"\d“ : 匹配一个数字字符,相当于[0-9]
"\D“ : 匹配一个非数字,相当于[^0-9]
"\s“ : 匹配一个空白字符
"\S“ : 匹配一个非空白字符
"\w“ : 匹配一个单词字符,包括大小写字母,数字,下划线,相当于[a-zA-Z0-9_]
"\W“ :匹配一个非单词字符
^ 匹配字符串的开始(在集合字符里[^a]表示非(不匹配)的意思
$ 匹配字符串的结束
注意:有\的记得加\,变成\\,表转义
如: \\d \\D \\s \\S \\w \\W
*/
public static void main(String[] args) {
//匹配任意一个字符
System.out.println(".".matches(".")); //true
//匹配任意三个字符
System.out.println("a".matches("...")); //false
System.out.println("-----------------------------------------");
//匹配是数字开头和数字结束的三个数字字符
System.out.println("02a".matches("^\\d\\d\\d$")); //false
System.out.println("a12".matches("^\\d\\d\\d$")); //false
System.out.println("a1a".matches("^\\d\\d\\d$")); //false
System.out.println("250".matches("^\\d\\d\\d$")); //true
}
}
🍂数量词
? 0次或1次
* 0次或多次 (任意次)
+ 1次或多次
{n} 重复n次
{n,} 重复n次以上 (至少n次) >=n
{n,m} 重复n到m次(包括n和m)
//注意:限定符只能影响到离它最近的那个规则,如果想要影响整体,就给那个整体加()
// 如:
需要匹配 over!三次
System.out.println("over!over!over!".matches("over!{3}")); //false ,只能影响到!
System.out.println("over!over!over!".matches("(over!){3}")); //true ,影响到整体
🌟代码演示
public class Demo {
/*
3.数量词(限定符)
? 0次或1次
* 0次或多次 (任意次)
+ 1次或多次 (至少一次)
{n} 重复n次
{n,} 重复n次以上 (至少n次) >=n
{n,m} 重复n到m次(包括n和m)
注意:限定符只能影响到离它最近的那个规则,如果想要影响整体,就给那个整体加()
如:
需要匹配 over!三次
System.out.println("over!over!over!".matches("over!{3}")); //false ,只能影响到!
System.out.println("over!over!over!".matches("(over!){3}")); //true ,影响到整体
*/
public static void main(String[] args) {
//表示匹配a-z中的字符 "一次"
System.out.println("ab".matches("[a-z]?")); //false
System.out.println("a".matches("[a-z]?")); //true
System.out.println("----------------------------");
-----------------------------------------------------------------------------------------
//表示匹配a-z中的字符 "任意次"
System.out.println("abcabc".matches("[a-z]*")); //true
System.out.println("-------------------------");
------------------------------------------------------------------------------------------
//表示匹配a-z中至少一次
System.out.println("ab".matches("[a-z]+")); //true
System.out.println("-------------------------------------");
-----------------------------------------------------------------------------------------
//表示匹配任意4个数字字符
System.out.println("abcd".matches("\\d{4}")); //false
System.out.println("0123".matches("\\d{4}")); //true
System.out.println("----------------------------------");
----------------------------------------------------------------------------------------------------
//表示匹配任意一个字符5次以上
System.out.println("abc".matches("\\w{5,}")); //false
System.out.println("abcdefg".matches("\\w{5,}")); //true
System.out.println("-----------------------------------------");
----------------------------------------------------------------------------------------------------
//表示匹配任意一个单词字符5-7次
System.out.println("abc".matches("\\w{5,7}")); //false
System.out.println("abcdefgh".matches("\\w{5,7}")); //false
System.out.println("abcde".matches("\\w{5,7}")); //true
}
}
二、正则表达式的作用
* 正则表达式是一个强大的字符串处理工具,是用于匹配字符串的模板,可以对字符串进行格式校验,查找、提取、替换等操作
三、String类中支持正则表达式的方法
* boolean matches(String regex): 判断该字符串是否匹配指定的正则表达式
* String replaceAll(String regex, String replacement): 将该字符串中所有匹配正则表达式的内容替换成新的字符串,并返回替换后的新的字符串
* String[] split(String regex):根据匹配规则,把字符串分割成多个子串
四、案例
⭐身份证案例
import java.util.Scanner;
public class Test4 {
/*
号码为18位,不能以数字0开头,前17位可以是数字,最后一位可以是数字或者大写字母X
*/
public static void main(String[] args) {
Scanner rd=new Scanner(System.in);
String a=rd.next();
Boolean b=a.matches("[1-9]\\d{16}[0-9X]");
System.out.println(b);
}
}
⭐邮箱案例
🌟代码演示
public class Demo {
public static void main(String[] args) {
//邮箱案例
Scanner rd=new Scanner(System.in);
String a=rd.next();
boolean b=a.matches("^[a-zA-Z][a-zA-Z0-9_]{5,18}");
System.out.println(b);
// System.out.println("123".matches("[123]."));
}
}
作者:KJ.JK
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习