正則詳細解說:https://juejin.im/post/5965943ff265da6c30653879
一、正則表達式中的字符含意
\ 做為轉義,即通常在"\"后面的字符不按原來意義解釋,如/b/匹配字符"b",當b前面加了反斜桿后/\b/,轉意為匹配一個單詞的邊界。
-或- 對正則表達式功能字符的還原,如"*"匹配它前面元字符0次或多次,/a*/將匹配a,aa,aaa,加了"\"后,/a\*/將只匹配"a*"。
^ 匹配一個輸入或一行的開頭,/^a/ 匹配"an A",而不匹配"An a"
$ 匹配一個輸入或一行的結尾,/a$/ 匹配"An a",而不匹配"an A"
* 匹配前面元字符0次或多次,/ba*/ 將匹配 b,ba,baa,baaa
+ 匹配前面元字符1次或多次,/ba+/ 將匹配 ba,baa,baaa
? 匹配前面元字符0次或1次,/ba?/ 將匹配b,ba
(x) 匹配 x 保存 x 在名為$1...$9的變量中
x|y 匹配 x 或 y
{n} 精確匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
[xyz] 字符集(character set),匹配這個集合中的任一一個字符(或元字符)
[^xyz] 不匹配這個集合中的任何一個字符
[\b] 匹配一個退格符
\b 匹配一個單詞的邊界
\B 匹配一個單詞的非邊界
\cX 這兒,X是一個控制符,/\cM/匹配Ctrl-M
\d 匹配一個數字字符,/\d/ = /[0-9]/
\D 匹配一個非字數字符,/\D/ = /[^0-9]/
\n 匹配一個換行符
\r 匹配一個回車符
\s 匹配一個空白字符,包括\n,\r,\f,\t,\v等
\S 匹配一個非空白字符,等於/[^\n\f\r\t\v]/
\t 匹配一個制表符
\v 匹配一個重直制表符
\w 匹配一個可以組成單詞的字符(alphanumeric,這是我的意譯,含數字),包括下划線,如[\w]匹配"$5.98"中的5,等於[a-zA-Z0-9]
\W 匹配一個不可以組成單詞的字符,如[\W]匹配"$5.98"中的$,等於[^a-zA-Z0-9]。
二、正則表達式直接量字符
\ f 換頁符
\ n 換行符
\ r 回車
\ t 制表符
\ v 垂直制表符
\ / 一個 / 直接量
\ \ 一個 \ 直接量
\ . 一個 . 直接量
\ * 一個 * 直接量
\ + 一個 + 直接量
\ ? 一個 ? 直接量
\ | 一個 | 直接量
\ ( 一個 ( 直接量
\ ) 一個 ) 直接量
\ [ 一個 [ 直接量
\ ] 一個 ] 直接量
\ { 一個 { 直接量
\ } 一個 } 直接量
\ XXX 由十進制數 XXX 指定的ASCII碼字符
\ Xnn 由十六進制數 nn 指定的ASCII碼字符
\ cX 控制字符^X. 例如, \cI等價於 \t, \cJ等價於 \n
三、正則表達式的字符類
[...] 位於括號之內的任意字符 [^...] 不在括號之中的任意字符 onkeyup="value=value.replace(/[^\d^\.]+/g,'')" 非數字非點替換為空 . 除了換行符之外的任意字符,等價於[^\n] \w 任何單字字符, 等價於[a-zA-Z0-9] \W 任何非單字字符,等價於[^a-zA-Z0-9] \s 任何空白符,等價於[\ t \ n \ r \ f \ v] \S 任何非空白符,等價於[^\ t \ n \ r \ f \ v] \d 任何數字,等價於[0-9] \D 除了數字之外的任何字符,等價於[^0-9] [\b] 一個退格直接量(特例)
四、正則表達式的復制字符
{n, m} 匹配前一項至少n次,但是不能超過m次 {n, } 匹配前一項n次,或者多次 {n} 匹配前一項恰好n次 ? 匹配前一項0次或1次,也就是說前一項是可選的. 等價於 {0, 1} + 匹配前一項1次或多次,等價於{1,} * 匹配前一項0次或多次.等價於{0,}
/\d{2, 4}/ //匹配2到4間的數字.
/\w{3} \d?/ //匹配三個單字字符和一個任意的數字.
/\s+java\s+/ //匹配字符串"java" ,並且該串前后可以有一個或多個空格.
/[^"] * / //匹配零個或多個非引號字符.
五、正則表達式的使用
5.1 正則表達式的創建
5.2 RegExp對象方法
test(): exec(str):
5.3 String對象的match()、replace()、split()、search()也用到了正則的模式匹配;
具體如何使用請參考文章:https://www.cnblogs.com/rain-null/p/7358267.html
參考的文章: