概述
- 就是一个字符串,正则表达式又称规则表达式。
- 作用: 专门用来检索 校验字符串的。
- Pattern:正则表达式的编译表示形式。
- String类提供了一个方法,进行字符串的校验: matches(String regex) 该方法 参数为正则表达式。
// String matches()
// 判断用户名是否符合规则,要求长度在[2,5]的范围内,只能由字母、数字、下划线组成。
// System.out.println("ac".matches("[a-zA-Z0-9_]{2,5}")&& "ac".matches("[^a]"));
// System.out.println("ac".matches("\\w{2,5}"));
正则表达式的字符类
- 普通的字符串就是一个正则表达式,但是只能表达自己本身,无法匹配一类字符串
- 判断某个字符串是否和某个正则表达式的规则匹配,使用String 类中的matches 方法
- 字符类型:表示单个的字符,使用的符号是中括号
说明:只要使用了方括号,无论里面写了多少内容,都表示单个的字符 - 方括号的表达方式:
[abc]:a或者h或者c中的一个
[^abc]:除了a、b、c以外的任何单个字符
[a-zA-Z]:az和A-Z中的任意单个字符
预定义字符类★
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
匹配中文
[\u4e00-\u9fa5]
字符串中和正则表达式有关的三个方法
1、boolean matches (String regex ):判断当前字符串是否和参数正则表达式匹配
2、String split (String regex )使用指定的正则表达式切割当前字符串
3、String replaceAll((String regex ,String replacement ):将调用者字符串中的所有匹配regex 正则的子串,全都替换成replacement 新串。replace不支持正则。
分组:() 表示分组,取值,取组值:$组名。
public class 正则表达式 {
public static void main(String[] args) {
System.out.println("ac".matches("a"));
System.out.println("ac".matches("[a-zA-Z0-9_]{2,5}"));
System.out.println("ac".matches("[^a]"));
// 邮箱:规则:随意+@+字母 /数字+.com
//注意:点表示任意字符,如果需要使用表示点,需要转义。
String emailReg = ".+@[a-zA-Z0-9]{2}\\.com";
System.out.println("12325610@qq.com".matches(emailReg));
String s ="1234aba23sfd0909dfa123";
//拆分根据数字/字母拆分
String[] arr = s.split("\\d+");
String[] arr1 = s.split("[a-zA-Z]+");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//替换字母部分为*
System.out.println(s.replaceAll("[a-zA-Z]+", "*"));
// ****
String s1="15123428901";
System.out.println(s1.replaceAll("(1[3-8][0-9])\\d{4}(\\d{4})", "$1****$2"));
}
}