Java正则总结
2021-04-23 21:27
标签:and split focus express 括号 空白 phone tde pre Java正则总结 标签:and split focus express 括号 空白 phone tde pre 原文地址:https://www.cnblogs.com/xiaozhang666/p/13268634.html正则表达式-字符类
1. [abc]:代表a或者b,或者c字符中的一个。
2. [^abc]:代表除a,b,c以外的任何字符。
3. [a-z]:代表a-z的所有小写字符中的一个。
4. [A-Z]:代表A-Z的所有大写字符中的一个。
5. [0-9]:代表0-9之间的某一个数字字符。
6. [a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符。
7. [a-dm-p]:a 到 d 或 m 到 p之间的任意一个字符。
/**
* 字符类
*/
public class RegTestDemo01 {
public static void main(String[] args) {
String str = "oad";
//1.验证str是否以h开头,以d结尾,中间是a,e,i,o,u中某个字符
System.out.println(str.matches("h[aeiou]d"));
//2.验证str是否以h开头,以d结尾,中间不是a,e,i,o,u中的某个字符
System.out.println(str.matches("h[^aeiou]d"));
//3.验证str是否a-z的任何一个小写字符开头,后跟ad
System.out.println(str.matches("[a-z]ad"));
//4.验证str是否以a-d或者m-p之间某个字符开头,后跟ad
System.out.println(str.matches("[a-dm-p]ad"));
}
}
正则表达式-预定义字符
1. "." : 匹配任何字符。
2. "\d":任何数字[0-9]的简写;
3. "\D":任何非数字[^0-9]的简写;
4. "\s": 空白字符:[ \t\n\x0B\f\r] 的简写
5. "\S": 非空白字符:[^\s] 的简写
6. "\w":单词字符:[a-zA-Z_0-9]的简写
7. "\W":非单词字符:[^\w]
/**
* 预定义字符
*/
public class RegTestDemo03 {
public static void main(String[] args) {
String str = "had.";
//1.验证str是否3位数字
System.out.println(str.matches("\\d\\d\\d"));
//2.验证手机号:1开头,第二位:3/5/8,剩下9位都是0-9的数字
String phone = "18600363521";
System.out.println(phone.matches("1[358]\\d\\d\\d\\d\\d\\d\\d\\d\\d"));
//3.验证字符串是否以h开头,以d结尾,中间是任何一个字符
System.out.println(str.matches("h.d"));
//4.验证str是否是:"had."
System.out.println(str.matches("had\\."));//\\. 就代表内容"."
}
}
正则表达式-数量词
1. X? : 0次或1次
2. X* : 0次到多次
3. X+ : 1次或多次
4. X{n} : 恰好n次
5. X{n,} : 至少n次
6. X{n,m}: n到m次(n和m都是包含的)
/**
* 数量词
*/
public class RegTestDemo04 {
public static void main(String[] args) {
String str = "1358654234567";
//1.验证str是否是三位数字
System.out.println(str.matches("\\d{3}"));
//2.验证str是否是多位数字
System.out.println(str.matches("\\d{2,}"));
//3.验证str是否是手机号:1开头,第二位:3/5/8,剩下9位都是0-9的数字
String phone = "18600363521";
System.out.println(phone.matches("1[358]\\d{9}"));
//4.验证小数:必须出现小数点,但是只能出现1次
String num = "4.13";
System.out.println(num.matches("\\d+\\.\\d+"));
//5.验证小数:小数点可以不出现,也可以出现1次
System.out.println(num.matches("\\d+\\.?\\d+"));
//6.验证小数:要求匹配:+3、+3.、+3.14、+3.14、-3
System.out.println(num.matches("[+-]?\\d+\\.?\\d*"));
//7.验证qq号码:1).5--15位;2).全部是数字;3).第一位不是0
String qq = "359614724";
System.out.println(qq.matches("[1-9]\\d{4,14}"));
}
}
正则表达式-分组括号( )
() 分组符号
/**
* 分组括号
*/
public class RegTestDemo05 {
public static void main(String[] args) {
String str = "DG8FV-B9TKY-FRT9J-99899-XPQ4G";
//验证这个序列号:分为5组,每组之间使用-隔开,每组由5位A-Z或者0-9的字符组成
System.out.println(str.matches("([A-Z0-9]{5}-){4}[A-Z0-9]{5}"));
}
}
String的split方法replaceAll方法
public String[] split(String 切割符);
/**
* String的split方法
* RegulationExpression regex
*/
public class RegTestDemo06 {
public static void main(String[] args) {
String str = "18--4+++++567+++99------56";
//切割字符串
String[] split = str.split("[+-]+");
System.out.println(Arrays.toString(split));
}
}
/**
* String的replaceAll方法
* RegulationExpression regex
*/
public class RegTestDemo07 {
public static void main(String[] args) {
String str = "jfdk432jfdk2jk24354j47jk5l31324";
//将字符串中的数字替换为*,如果相邻都是数字,只要一个*
String newStr = str.replaceAll("\\d+", "*");
System.out.println(newStr);
}
}
上一篇:js 数组的排序,冒泡排序法
下一篇:C++求树子节点权重最大的和