一.正则表达式
1.预定义字符集
| . | 表示任意一个字符 |
| \d | 表示任意一个数字 |
| \w | 表示任意一个单词字符(只能是数字、字母、下划线) |
| \s | 表示任意一个空白字符(\t\r\n\f\x0B) |
| \D | 表示任意一个非数字字符 |
| \W | 表示任意一个非单词字符 |
| \S | 表示任意一个非空 |
| \. | 表示. |
2.字符集合[]
| 正则表达式 | 说明 |
| [] | 一个字符 |
| [ace] | a c e中任意一个字符 |
| [^] | 除了某个字符 |
| [^ace] | 除了a c e的任意字符 |
| [a-z] | a、b、c……z中的任意一个字符 |
| [a-zA-Z0-9] | a-z、A-Z、0-9中任意一个字符 |
| [a-z&&[^bc]] | a-z中除了bc以外的任意一个字符 |
3.数量词
| 正则表达式 | 说明 |
| A? | 表示0个或1个A |
| A* | 表示0或任意多个 |
| A+ | 表示连续出现>=1次 |
| A{n} | n个A |
| X{n,} | >=n个A |
| X{n,m} | 表示n到m个A |
4.分组()
() 可以将内容看做一个整体。()中可以使用"|"来表示或关系。
例:(ABC){3} ABCABCABC
(ABC|DEF){3} 可以是DEFABCABC、ABCDEFABC、ABCABCDEF、ABCDEFDEF、DEFABCDEF、DEFDEFABC、DEFDEFDEF其一。
5.边界符
通过在正则表达式的开始添加"^"以及末尾添加"$"来表示一个整体。若不使用它们,那么正则表达式只匹配某个字符串的部分内容是否符合格式规则,但使用它们,则要求字符串必须从头到尾都满足该格式规则。
不加:(ABC){3} 123ABCABCABC123231同样符合。
加^ :^(ABC){3} ABCABCABC123231符合。123ABCABCABC不符合。
加$ :(ABC){3}$ 123ABCABCABC符合。 ABCABCABC123231不符合。
加^$:^(ABC){3}$ 必须是ABCABCABC才符合。
【在java中,^$写与不写效果相同,在其他语言中未必如此。】
二.java中String正则表达式相关的API
1.matches
matches()方法的参数要求传入一个用字符串描述的正则表达式,然后使用该正则表达式描述的字符串格式规则来匹配当前字符串,若满足那么该方法返回true。否则返回false。
1 import java.util.Scanner; 2 /** 3 * 使用给定的正则表达式验证当前字符串是否满足该格式要求. 4 * boolean matches(String regex) 5 * 在java字符串中,正则表达式的\,需用\\转义。 6 * 例如:正则表达式\\,在java字符串中应为\\\\。 7 */ 8 public class String_matches { 9 public static void main(String[] args) { 10 System.out.println("请输入您的邮箱地址:"); 11 Scanner in = new Scanner(System.in); 12 String mail = in.nextLine(); 13 14 //邮箱的正则表达式:[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z]+)+ 15 String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z]+)+"; 16 System.out.println(regex); 17 18 boolean match = mail.matches(regex); 19 if(match){ 20 System.out.println("是邮箱"); 21 }else{ 22 System.out.println("不是邮箱"); 23 } 24 in.close(); 25 } 26 }