正则表达式
String类型正则表达式
public boolean matches(String regex) 将字符串与给定的正则(regex)进行匹配验证
public String replaceAll(String regex,String replacement) 按照规定的正则(regex)将字符串(replacement)全部替换
public String replaceFirst(String regex,String replacement) 按照规定的正则(regex)将字符串(replacement)出现的首个替换
public String[] split(String regex) 按照正则(regex)将指定的字符串拆分
public String[] split(String regex,int limit) 按照正则拆分成字符串数组 ,数组长度为limit
正则标记
(1)一般表达式
[a-z] 表示任意一个小写字母
[A-Z] 表示任意一个大写字母
[a-zA-Z] 表示任意一个字母
[0-9] 表示任意一个数字
[0-9a-z] 表示任意一个数字或小写字母
"^"相当于java中的"!"
[^a-z] 表示除小写字母以外任意一个字符
[^A-Z] 表示除大写字母以外任意一个字符
[^a-zA-Z] 表示除字符以外的任意一个字符
[^0-9] 表示除数字以外的任意一个字符
[^0-9a-z] 表示除数字和小写字母以外的任意一个字符
(2)简写表达式(java)
// 反斜杠
//d 数字等价于[0-9]
//D 非数字 等价于[^0-9]
//s 空白符号 [/t/n/x0B/f/r]
//S 非空白符号 [^/t/n/x0B/f/r]
//w 单独字符 [a-zA-Z_0-9]
//W 非单独字符 [^a-zA-Z_0-9]
上述的一般表达式和简介表达式都是表示出现一次,如果想控制出现的字数,就需要加上数量表达式,组合控制
(3)数量表达式
?: 表示0或者1次
*: 表示0次或者多次
+: 表示1次以上
{n}: 表示出现n次
{n,} 出现n次以上
{n,m} 出现n~m次
正则实例
1. replaceFirst(String regex,String replacement) 、replaceAll(String regex,String replacement) 替换字符代码演示:
package demo;
public class RegCase {
public static void main(String[] args) {
//将符合正则表达式的用字符串替换
String info = "a89565b111c22d54546556123e465465165f";
String regex = "[\\d]+";
//将字符串中满足正则表达式的字符全部替换为空
String result1 = info.replaceAll(regex, "");
//将字符串中首次满足正则表达式的字符替换为空
String result2 = info.replaceFirst(regex, "");
System.out.println(result1);
System.out.println(result2);
}
}
代码结果:
abcdef
ab111c22d54546556123e465465165f
2.split(String regex)、split(String regex,int limit) 将字符串按正则截取
代码演示:
package lesson0924;
import java.util.Arrays;
public class RegCase {
public static void main(String[] args) {
//字符串拆分
String str = "abc123def456hij789dsada456dasda789ds";
//使用数字作为拆分符号,将上面的字符串拆分成字符串数组
String reg = "[\\d]+";
String[] arr1 = str.split(reg);
String[] arr2 = str.split(reg,2);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
}
}
代码结果:
[abc, def, hij, dsada, dasda, ds]
6
[abc, def456hij789dsada456dasda789ds]
2
3.matches(String regex) 验证邮箱格式
代码演示:
package demo;
import java.util.Scanner;
public class RegCase {
public static void main(String[] args) {
/*
* 邮箱例子: 954328890@qq.com
* 123456@163.com
* 987654321@sina.com
* 987654321@sina.com.cn
* 123_456@163.cn
*/
//编写邮箱验证正则表达式
String reg = "([\\w]{6,15})@([\\w&&[^_]]{2,6})(.com|.cn|.com.cn)";
Scanner sc = new Scanner(System.in);
String info = sc.next();
//matches用来判断字符串是否匹配正则表达式
if(info.matches(reg)){
System.out.println("邮箱格式匹配");
}else{
System.out.println("邮箱格式不匹配");
}
sc.close();
}
}
代码演示:
56893211315@78895.cn
邮箱格式匹配
补充:
"( )"表示一组正则成员
多个正则条件需要同时满足可以使用"&&"
多个正则条件满足一个即可可以使用"|"