* 匹配前面的字符/子表達式或括號裏的字符 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$