基本语法
1.选择
|竖线符代表选择(即并集),具有最低优先级。例如"aaa|bbb"可以匹配aaa或bbb。
2.数量限定
某个字符后的数量限定符用来限定前面这个字符允许出现的个数。
最常见的数量限定符包括"+"、 "?"和 "*"(不加数量限定则代表出现一次且仅出现一次):
(1)+ 加号代表前面的字符必须至少出现一次。(1次、或多次)。
例如, "goo+gle"可以匹配google、gooogle、goooogle等;
(2)? 问号代表前面的字符最多只可以出现一次。(0次、或1次)。
例如:"colou?r"可以匹配color或者colour;
(3)* 星号代表前面的字符可以不出现,也可以出现一次或者多次。(0次、或1次、或多次)。
例如, " 0*42 "可以匹配42、042、0042、00042等。
3.表达式规则
(1) ^ 匹配字符串的开始位置
(2) $ 匹配字符串的结束位置
案例:
String s1 = "111223abc";
String regex = "^[0-9]+abc$";
boolean b = s1.matches(regex);
System.out.println(b);
(3){n} n是一个非负整数。匹配确定的n次
示例:o{2}能匹配food,不能匹配Bob。
(4){n,} n是一个非负整数。匹配确定的n次
示例:【o{2,}】
不能匹配 "Bob"中的 "o",但能匹配 "foooood"中的所有o。
"o{1,}"等价于 "o+"
"o{0,}"则等价于“o*"。
(5){n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。
(6)x 代表字符x
示例:匹配规则为 "a",那么需要匹配的字符串内容就是 "a"。
(7)[abc] 字符集合,匹配所包含的任意一个字符。
示例:"[abc]",匹配的内容就是字符a,或者字符b,或字符c的一个
案例:匹配手机号
/匹配手机号
//长度11位,开头为1,第二个数字是3、7、5、8
String regex4="1[3758][0-9]{9}";
Scanner sc=new Scanner(System.in);
System.out.println("请输入手机号:");
String number=sc.next();
boolean result=number.matches(regex4);
if(result==true)
System.out.println("手机号匹配!");
else
System.out.println("手机号不匹配!");
(8)[^abc] 排除型字符集合,表示除了 a、b 或 c以外的任何字符
(9)[a-zA-Z] 匹配的是a 到 z 或 A 到 Z,两头的字母包括在内
(10) [0-9] 匹配的是 0到9数字,两头的数字包括在内
(11) [a-zA-Z_0-9] 匹配的是字母或者数字或者下划线(即单词字符)
(12) .(点)匹配除“\n"之外的任何单个字符。如果,就想使用 . 的话,使用匹配规则"\\."来实现
(13)\d 匹配一个数字字符。等价于[0-9]。
(14)\w 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]"。
(15)\b 匹配一个单词边界,也就是指单词和空格间的位置。
例如,“er\b"可以匹配“never"中的“er",但不能匹配“verb"中的“er"。
案例:匹配邮箱
String regex="[a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\\.[a-zA-Z_0-9]+)+";
System.out.println("[email protected]".matches(regex));