正则表达式的概念及演示
概念:“正则表达式”:它是由“一组规则”组成的一个“字符串”,这个规则定义了:对其它字符串进行验证的一些规则。在Java中,我们经常需要验证一些字符串,例如:年龄必须是2位的数字、用户名必须是8位长度 而且只能包含大小写字母、数字等。正则表达式就是用来验证各种字符串的规则。它内部描述了一 些规则,我们可以验证用户输入的字符串是否匹配这个规则。
演示:
下面的程序让用户输入一个QQ号码,我们要验证:
QQ号码必须是5–15位长度
而且必须全部是数字
而且首位不能为0
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的QQ号码:");
String qq = sc.next();
System.out.println(checkQQ2(qq));
}
//使用正则表达式验证
private static boolean checkQQ2(String qq){
String regex = "[1-9]\\d{4,14}";
//正则表达式
return qq.matches(regex);
}
}
上面程序checkQQ2()方法中String类型的变量regex就存储了一个"正则表达式 ",而这个正则表达式就 描述了我们需要的三个规则。matches()方法是String类的一个方法,用于接收一个正则表达式,并 将"本对象"与参数"正则表达式"进行匹配,如果本对象符合正则表达式的规则,则返回true,否则返回 false。
我们接下来就重点看怎样写正则表达式!
正则表达式-字符类
- [abc]:代表a或者b,或者c字符中的一个。
- [^abc]:代表除a,b,c以外的任何字符。
- [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之间的任意一个字符。
正则表达式-逻辑运算符
- &&:并且
- | :或者(可以省略)
正则表达式-预定义字符
- “.” : 匹配任何字符。
- “\d”:任何数字[0-9]的简写;
- “\D”:任何非数字[^0-9]的简写;
- “\s”: 空白字符:[ \t\n\x0B\f\r] 的简写
- “\S”: 非空白字符:[^\s] 的简写
- “\w”:单词字符:[a-zA-Z_0-9]的简写
- “\W”:非单词字符:[^\w]
正则表达式-数量词
- x? : 0次或1次
- x* : 0次到多次
- x+ : 1次或多次
- X{n} : 恰好n次
- X{n,} : 至少n次
- X{n,m}: n到m次(n和m都是包含的,最少n次,最多m次。)
正则表达式-分组括号()
示例代码:
public class Demo06 {
public static void main(String[] args) {
String str = "DFFDS-FEAGD-FEAFD-ZAFEH-JIJYU";
//验证str:是一个五位大写字母为一段,一共五段的序列号
String regex = "([A-Z]{5}-){4}[A-Z]{5}";
System.out.println(str.matches(regex));
}
}
如上代码String regex = “([A-Z]{5}-){4}[A-Z]{5}”;括号()中的就是一组,后面跟的{4}表示前面一组恰好出现四次。
String的split方法中使用正则表达式
String类的split()方法原型
public String[] split(String regex);参数regex就是一个正则表达式。可以将当前字符串 中匹配regex正则表达式的符号作为"分隔符"来切割字符串。
示例代码:
public class Demo07 {
public static void main(String[] args) {
String row = "张三,,,,,,,,,男,,,,,22";
String[] split = row.split(",+");//以"符合这个正则表达式的字符串"为"分隔符"进行切割
System.out.println("数组长度:" + split.length);
System.out.println(Arrays.toString(split));
}
}
String类的replaceAll方法中使用正则表达式
String类的replaceAll()方法原型:
public String replaceAll(String regex,String newStr);参数regex就是一个正则表达式。 可以将当前字符串中匹配regex正则表达式的字符串替换为newStr。
public class Demo08 {
public static void main(String[] args) {
String str = "jfkw324kjfl32432j432432jfdslr3244432432jfkdsf32432432";
//需求:将str中所有的数字替换为*
// String newStr = str.replaceAll("\\d", "*");//每位数字都替换为*
String newStr = str.replaceAll("\\d+", "*");//每段数字,替换为一个*
System.out.println(newStr);
}
}
来源:CSDN
作者:樂少
链接:https://blog.csdn.net/weixin_43473420/article/details/104314809