1 正则表达式简介:
所谓正则表达式就是使用一系列预定义的特殊字符来描述一个字符串的格式规则,然后使用该格式规则匹配某个字符串是否符合格式要求。
1.1 "."和"\"
"."点儿,在正则表达式中表示任意一个字符
"\" 在正则表达式中是转意字符,当我们需要描述一个已经被正则表达式使用的特殊字符时,我们就可以通过使用"\"将其转变为原来的意思。
"\"在正则表达式中也有一些预定义的特殊内容:
\d: 表示任意一个数字
\w: 表示任意一个单词字符(只能是数字,字母,下划线)
\s: 表示任意一个空白字符(\t \r \n \f \xOB)
\D: 表示任意一个非数字字符
\W: 表示任意一个非单词字符
\S: 表示任意一个非空白字符
1.2 "字符集合[]"
"[]": 用来描述单一字符,方括号内部可以定义这个字符的内容,也可以描述一个范围。
1.3 "*"、"+"、"?"
通常我们需要描述的字符串会与很多重复出现的元素,但有不需要严格限制出现的次数时,我们就可以使用 "*"、"+"、"?"这些量词。
"+":表示内容可以连续出现至少1次以上
"*":表示内容出现0-若干次
"?":表示内容出现0-1次
1.4 {n}、{n,}、{n,m}
除了前面讲到的量词外,有时我们也需要要求内容出现的次数有具体要求。
{n}:表示内容必须出现n次
{n,}:表示内容出现至少n次
{n,m}:表示内容出现n-m次
2 分组
当我们描述电话号码时,前面有区号,区号的形式可以是0086或者+86
这时我们可以使用分组"()"。()可以讲内容看做一个整体,()中可以使用"|"来表示或关系。例如,(+86|0086)表示这里可以是+86或者0086。
3 "^"和"$"
通过在正则表达式的开始添加 "^"以及在末尾添加 "$"来表示一个整体。若不使用它们,那么正则表达式只匹配某个字符串的部分内容是否符合格式规则,但使用它们,则要求字符串必须从头到尾都满足该格式规则。
二、String正则相关API
1 matches方法
matches()方法的参数要求我们传入一个用字符串描述的正则表达式,然后使用该正则表达式描述的字符串格式规则来匹配当前字符串,若满足那么该方法返回true,否则返回false。
例如:邮箱的测试
String emailRegex = "^[a-zA-Z0-9_.-]+@([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9]{2,4}";
String email = "bjliy@tarena.com.cn";
System.out.println(email.matches(emailRegEx));//true
2 split方法
String[] split(String regex):参数要求传入一个用字符串描述的正则表达式,然后使用该正则表达式描述的字符串来匹配当前字符串,并按照满足的部分将字符串拆分。
例如:
Sring str = "java,c#,php,javascript";
String[] array = str.split(",");
System.out.println(Arrays.toString(array));
3 replaceAll方法
String replaceAll(String regex,String replacement):参数要求传入一个用字符串描述的正则表达书和一个需要替换的字符串,然后使用该正则表达式描述的字符串规则来匹配当前字符串,并将满足的部分替换为需要替换的这个字符串。
例如:
String str = "abc123bcd45ef6g7890";
str = str.replaceAll("\\d+","数字");
System.out.println(str);//abc数字bcd数字ef数字g数字