正则表达式
正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的具有特殊规则的字符串,用于描述要匹配的文本模式。正则表达式可以在文本中查找、替换、提取和验证特定的模式。例如校验身份证号、手机号等等。几乎在各种计算机编程语言中都有用到。可以分为普通正则表达式、扩展正则表达式、高级正则表达式。普通正则表达式在linux shell中常用到,高级正则表达式语法规范,基本由perl演化而来。目前常见程序语言(php,perl,python,java,c#)都支持高级正则表达式。
String类中和正则表达式相关的方法
boolean matches(String regex)
:校验字符串是否符合指定的regex的规则。String[] split(String regex)
: 根据给定正则表达式的匹配拆分此字符串。
public class Main {
public static void main(String[] args)throws Exception{
method();
}
private static void method() {
String s1 = "6 66 666";
String[] arr1 = s1.split(" +");
System.out.println(Arrays.toString(arr1));
}
}
String replaceAll(String regex, String replacement)
:把满足正则表达式的字符串,替换为新的字符。
public class Main {
public static void main(String[] args)throws Exception{
method();
}
private static void method() {
String s1 = "6 66 666";
String s2 = s1.replaceAll(" +", "8");
System.out.println("s2 = " + s2);
}
}
字符类
正则表达式-字符类:[ ]表示一个区间,范围可以自己定义
[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-fh-p]
:a 到 f 或 h 到 p之间的任意一个字符
逻辑运算符
&&
:并且|
:或者
预定义字符
"."
: 匹配任何字符。(重点) 不能加[ ]"\\d"
:任何数字[0-9]的简写;(重点)"\\D"
:任何非数字[^0-9]的简写;"\\s"
: 空白字符:[ \t\n\x0B\f\r] 的简写"\\S"
: 非空白字符:[^\s] 的简写"\\w"
:单词字符:[a-zA-Z_0-9]的简写(重点)"\\W"
:非单词字符:[^\w]
数量词
X?
:x出现的数量为0次或1次X*
:x出现的数量为0次到多次X+
:x出现的数量为1次或多次X>=1次X{n}
:x出现的数量为恰好n次X=n次X{n,}
:x出现的数量为至少n次X>=n次 x{3,}X{n,m}
:x出现的数量为n到m次(n和m都是包含的)n=<X<=m
示例:验证手机号
public class Main {
public static void main(String[] args)throws Exception{
method();
}
private static void method() {
//1开头 第二位3 5 7 9 剩下的都是0-9的数字出现9
boolean result = "131234567891".matches("[1][3579]\\d{9}");次
System.out.println("result = " + result);
}
}
分组括号()
例如(123)
public class Main {
public static void main(String[] args)throws Exception{
method();
}
private static void method() {
boolean result = "123123123".matches("(123)*"); //*表明出现任意次
System.out.println("result = " + result);
}
}
返回结果为true表明校验123出现多次成功。
推荐一个正则表达式在线生成的网址