正则表达式:正确规则的表达式,通常用来做一些数据的校验。正则表达式是一个独立的技术,很多语言都支持他
字符类 | |
[abc] | a、b 或 c(简单类) |
[^abc] | 任何字符,除了 a、b 或 c(否定) |
[a-zA-Z] | a 到 z 或 A 到 Z,两头的字母包括在内(范围) |
[a-d[m-p]] | a 到 d 或 m 到 p:[a-dm-p](并集) |
[a-z&&[def]] | d、e 或 f(交集) |
[a-z&&[^bc]] | a 到 z,除了 b 和 c:[ad-z](减去) |
[a-z&&[^m-p]] | a 到 z,而非 m 到 p:[a-lq-z](减去) |
预定义字符类 | |
. | 任何字符(与行结束符可能匹配也可能不匹配) |
\d | 数字:[0-9] |
\D | 非数字: [^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
| |
Greedy 数量词 | |
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
1.正则表达式的检验功能举例
1)检验手机号码;
2)检验邮箱;
package org.westos.demo2;
public class Demo1 {
public static void main(String[] args) {
// 校验手机号
// 定义正则
String regx = "[1][35678][0-9][0-9]{8}";
boolean a = "15114828003".matches(regx);
System.out.println(a);
// 校验邮箱的规则
String mailRgex = "[a-zA-Z0-9]{6,16}@[a-z0-9]{2,16}\\.(\\w+)";
boolean b = "1213143704@qq.com".matches(mailRgex);
System.out.println(b);
}
}
2 根据正则切割字符串采用split()方法;
API中split()方法的概述:public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串;
参数:regex
- 定界正则表达式
返回:字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
使用split()方法根据正则切割字符串举例:
package org.westos.demo2;
import java.util.Arrays;
public class MyTest4 {
public static void main(String[] args) {
// 根据正则切割字符串的方法 split();
String string = "J-A-V-A";// 给定义个需要切割的字符串
String[] split = string.split("-");// 调用split()方法,正则表达式为“-”,返回一个字符数组;
System.out.println(Arrays.toString(split));// 使用Arrays数组工具类中的toString()方法对数组进行打印
String[] split2 = "h=e=l=l=o".split("=");// 调用split()方法,正则表达式为“=”,返回一个字符数组;
String[] split3 = "w.o.r.l.d".split("\\.");// 调用split()方法,正则表达式为“.”,返回一个字符数组;
System.out.println(Arrays.toString(split2));// 使用Arrays数组工具类中的toString()方法对数组进行打印
System.out.println(Arrays.toString(split3));// 使用Arrays数组工具类中的toString()方法对数组进行打印
String string2 = "你dasdad好kdkj啊";
String[] split4 = string2.split("\\w+");// 调用split()方法,正则表达式为“\\w+”,返回一个字符数组;
System.out.println(split4[0]);
System.out.println(split4[1]);
System.out.println(split4[2]);
}
}
3 根据正则表达式对字符串中的字符进行替换
replaceAll(): 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串;
replace(): 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串
正则表达式对字符串中的字符进行替换举例:
package org.westos.demo2;
import java.util.Arrays;
public class MyTest6 {
public static void main(String[] args) {
String string = "喜欢java也喜欢c,但更喜欢java";// 给定一个字符串
String string2 = string.replace("c", "*").replaceAll("java", "*");// 使用*代替java和c
System.out.println(string2);// 打印字符串
// 根据正则表达式去替换
String string3 = "你askh好ksdjksa啊";// 给定一个没有规则的字符串
String String4 = string3.replaceAll("\\w+", "");// 使用空字符串代替字母
System.out.println(String4);// 打印字符串
}
}