正则表达式
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) { /* * 邮箱例子: [email protected] * [email protected] * [email protected] * [email protected] * [email protected] */ //编写邮箱验证正则表达式 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(); } }
代码演示:
[email protected] 邮箱格式匹配
补充:
"( )"表示一组正则成员
多个正则条件需要同时满足可以使用"&&"
多个正则条件满足一个即可可以使用"|"