正则表达式在java中的使用(重点是对正则表达式的学习)
- 正则表达式检验qq的正确性
-
public static void checkQQ(String qq) { String regex = "[1-9]\\d{4,14}"; boolean flag = qq.matches(regex); if ( flag ) System.out.println(qq + "===is ok"); else System.out.println(qq + "===不合法");
- 重点看regex表达式,不在java中写的时候是这样的:[1-9]\d{4,14},他的意思是要检验的字符创第一个数字必须是一到九这几个数据中的其中一个,不能是零.
- \d是正则表达式中一预定义好的符号,同[0-9],表示0-9中的任意一个数字
- {4,14},表示的是对前边的字符进行数量限制,至少有四个,最多14个
- 而双\\的原因是因为‘\’在java中是一个转义字符,所以要用到双反斜线。(总结起来表达的就是:qq号的第一位不能以0开始,至少是5位最多是15位的数字组成的账号)
-
- 正则表达式检验电话号码的正确性
-
1 public static void checkTel(String tel) 2 { 3 4 String telReg = "1[358]\\d{9}"; 5 System.out.println(tel.matches(telReg)); 6 }
- 看telReg表达式,不在java中写是这样的:1[358]\\d{9},他的意思是:检验的字符串第一个数字必须是1开头的,然后第二个数字必须是358中的任意一个数字,第二位往后的数字是0-9中的任意一个,且必须是9位,整体的意识就是电话号码必须是11位数字,以1开头,第二位必须是358中的人一个。
-
- 使用正则表达式进行字符串分割
-
public static void splitDemo() { String str = "wo shi cheng xu yuan"; String reg = " +";//按照多个空格来进行切割 String[] arr = str.split(reg); System.out.println(arr.length); for(String s : arr) { System.out.println(s); }
- 补充一下‘+’,在正则表达式中表示数量{1,},表示前边的字符至少一个或多个。
- “ +”:注意加号前边是个空格,此表达式匹配一个或者多个空格,然后使用java字符串的split方法对字符串进行分割,得到的就是一个字符串数组。
-
- 使用正则表达式进行字符串替换
-
public static void replaceAllDemo() { String str = "w12er1389980000ty1234564uiod234345675f";//将字符串中的连着五个以上的数字替换成#。 str = str.replaceAll("\\d{5,}","#"); System.out.println(str); }
- \d表示的是[0-9]中的任意一个数字,{5,}表示的是量词,至少5个或者多个。此例中使用java字符串的replaceAll方法对连着五个以上的数字进行替换。
-
- 使用正则表达式的组替换
-
public static void replaceAllDemo2() { String str1 = "erkktyqqquizzzzzo"; //将重叠的字符替换成单个字母。zzzz->z str1 = str1.replaceAll("(.)\\1+","$1"); System.out.println(str1); }
- (.)表示一个组,\1表示的是正则表达式的第一组,+是数量词{1,}表示一次或者多次,$1表示的第一组中匹配到的内容。
- 整个程序的意思是,吧一串字符串中的叠词变成单个字母
-