文章目录
- 正则表达式
- 概述
- 定义
- 作用
- 好处
- 弊端
- 详解
- 表述单个字符
- 预定义字符类
- 数量词
- 模糊数量词
- 精确数量词
- 相关的方法
正则表达式
概述
定义
就是一个字符串
注意:正则表达式就是一个字符串,所以要加双引号
作用
可以表达:一个字符串,一类字符串,一类字符串的规则或者格式
好处
简洁的表述复杂的规则
比如验证qq号码:(非0开头;全是数字;5-15位)
String str = "1234";
System.out.println(str.matches("[1-9][0-9]{4,14}"));//false
弊端
易错,判断规定不完全,容易存在漏洞
详解
表述单个字符
符号:[ ][abc]
——》a、b、c三选一[^abc]
——》除了a、b、c以外的单个字符[a-zA-Z]
——》a-z和A-Z之间的单个字符点
——》任意单个字符
预定义字符类
java中用“\\”代替“\”
罗列 | 说明 |
点 | 任意一个字符 |
反斜杠 | 转义 |
反斜杠点 | 取消点的特殊功能,就表示一个点 |
\d | 数字字符 |
\D | 非数字字符 |
\s | 空格字符(换行\n也算) |
\S | 非空格字符 |
\w | [a-zA-Z0-9_] |
\W | 除了\w以外的字符 |
数量词
用于修饰字符出现的次数,即某个字符重复出现多少次
模糊数量词
模糊数量词 | 说明 |
X? | X字符,出现0或者1次 |
X+ | X字符,出现1或者多次 |
X* | X字符,出现任意次,包括0次 |
精确数量词
模糊数量词 | 说明 |
X{n} | X字符,恰好出现n次 |
X{n,} | X字符,至少出现n次 |
X{n,m} | X字符,至少出现n次,最多m次 |
例如,
String pwd = "12";
System.out.println(pwd.matches("\\w*"));//true
String name = "123456";
if(name.matches("[1-9][0-9]{5,9}")) {
System.out.println("符合");
}else {
System.out.println("不符合");
}
相关的方法
Ⅰ、boolean matches(String regex):判断普通字符串是否和正则表达式匹配,使用String类的matches(),返回值为boolean。
String regex = "[a-zA-Z0-9_]";
System.out.println("a".matches(regex));//true
Ⅱ、String[] split(String regex):使用指定的正则表达式切割当前字符串。注意返回的是数组;点在java中表示任意一个字符。所以需要转义,就需要用到“\”,但是在Java中用“\\”代替“\”
String str = "com.baidu.www";
String[] arr = str.split("\\.");
System.out.println(Arrays.toString(arr));//[com, baidu, www]
Ⅲ、String replaceAll(String regex,String replacement):将regex正则表达式表述的子字符串,全部替换为replacement新串。操做普通字符串使用replace进行替换,但是这里需要使用正则表达式,所以使用replaceAll()进行替换
String str2 = "abc123abc";
String result = str2.replaceAll("[0-9]", "");//用空代替数字,已达到删除数字的效果
System.out.println(result);//abcabc
PS:
【】表示重点,删除线表示已解决
学习记录使用,有什么不妥的还望指证