量词
+ 至少一次 等价于{1,}
? 至多一次 等价于{0,1}
* 0到无穷多次 等价于{0,}
(“a”.matches(“.”));//.是任意字符(只限一个) T
(“aaaa”.matches(“a*”)); 输出T
(“aaaa”.matches(“a+”));输出T
(“”.matches(“a*”)); 输出T
(“aaaa”.matches(“a?”));输出T
(“”.matches(“a?”));输出T
\d+ 验证数字字符串
(ac)+ ac同时出现多次
连字符
[0-789]等价于[0-9]
[0-9a-z]表示数字或字母的一个字符
("a".matches("[abc]"));匹配
("a".matches("[^abc]"));不匹配
("A".matches("[a-zA-Z]"));T
("A".matches("[a-z]|[A-Z]"));T
("A".matches("[a-z[A-Z]]"));T 上述三个等价
("R".matches("[A-Z&&[RFG]]"));T &&表示and,同时满足
特殊字符
\s 匹配空白字符(包括回车,换行,制表,空格)
\S 非
\w [0-9a-zA-Z_] 1个字符
\W [^0-9a-zA-Z_]
\d [0-9]
\D[^0-9]
\ 就是表示\字符
(" \n\r\t".matches("\\s{4}"));T
(" ".matches("\\S"));F
("a_8".matches("\\w{3}"));T
("abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+"));T
("\\".matches("\\\\"));T
java里面一个\回和后面的字符形成转义,故为表示一个\,需要用两个\\表示。正则时, 匹配一个反斜线需要用4个反斜线来表示。
锚点
\b 单词分界符,要求单侧是单词字符,另一侧是非单词字符。
^ 匹配一行的开头
$ 匹配一行的结尾
\A 整个字符串的开头,默认情况下等于^
\Z 匹配整个字符串的末尾
环视
仅用于布尔判断
(?=) 右侧文本能有子表达式匹配 肯定顺环视
(?!) 右侧文本不能有子表达式匹配 否定顺环视
(?<) 左侧文本能有子表达式匹配 肯定逆环视
(?!) 左侧文本不能有子表达式匹配 否定逆环视
捕获分组
将括号内的子表达式捕获的字符串存放到匹配结果中,供匹配完成后访问。
有括号就分组