* 匹配前面的字符/子表达式或括号里的字符 0次或多次
a*b*
result: aaaaa,aaabbb,bbbbb
+ 匹配前面的字符/子表达式或括号里的字符至少1次
a+b+
result: aaaab,abbbb
[ ] 匹配任意一个字符,相当于在这个集合里任选一个
[A-Z]*
result: FEATURE,PART,NOTICE
( ) 表达式编组,在正则表达式的规则里编组会优先运行
(a*b)*
result: aaabaab,abaaab,ababaaaabab
{m,n} 匹配前面的字符/子表达式或括号里的字符 m 到次到 n 次,包含 m 或 n
a{2,3}b{2,3}
result: aabbb,aaabb,aabb,aaabbb
[^] 匹配任意一个不在中括号里的字符
[^A-Z]*
result: apple,qwerty,lowercase
| 匹配任意一个由竖线分割的字符/子表达式
b(a|i|e)d
result: bad,bid,bed
. 匹配任意单个字符,包括符号/数字和空格等
b.d
result: b$d,bgd,b2d
^ 指定字符串开始位置的字符或子表达式
^a
result: apple,account,aad
\ 转义字符,把有特殊含义的字符转换成字面形式
\.\|\\
result: .|\
$ 常用在正则表达式的末尾,表示从字符串的末端匹配。如果不用它,每个正则表达式实际都带着 .* 模式,只会从字符串开头进行匹配。这个符号可以看成是 ^ 符号的反义词
[A-Z]*[a-z]*$
result: ABCabc,feddsf,Bdsf
?! 不包含的意思。通常放在字符或正则表达式的前面,表示字符不能出现在目标字符串里。如果要在整个字符串中全部排除某个字符,就加上 ^ 和 $ 符号
^((?![A-Z]).)*$
result: hello!,i'm not here,i have 5$