元字符
正則表達式讓人望而卻步以一個重要原因就是轉義字符太多了,組合非常多,但是正則表達式的元字符(在正則表達式中具有特殊意義的專用字符,可以用來規(guī)定其前導字符)并不多。
( [ { \ ^ $ | ) ? * + .
特殊字符
| 字符 | 含義 |
|---|---|
| \t | 水平制表符 |
| \r | 回車符 |
| \n | 換行符 |
| \f | 換頁符 |
| \v | 垂直制表符 |
| \0 | 空字符 |
字符類
一般情況下正則表達式一個字符(轉義字符算一個)對應字符串一個字符,一般情況下正則表達式一個字符(轉義字符算一個)對應字符串一個字符。但是我們可以使用元字符[]來構建一個簡單的類, 比如[abcd]代表一個字符,這個字符可以是 abcd四個字符中的任意一個。
表示范圍
匹配數字0-9:[0-9].
匹配字母:[a-zA-Z].
取反
元字符[]組合可以創(chuàng)建一個類,我們還可以使用元字符^創(chuàng)建反向類/負向類,反向類的意思是不屬于XXX類的內容,表達式[^abc] 表示一個不是字符a或b或c的字符。
預定義類
| 字符 | 等價類 | 含義 |
|---|---|---|
| . | [^\r\n] | 除了回車符和換行符外所有字符 |
| \d | [0-9] | 數字字符 |
| \D | [^0-9] | 非數字字符 |
| \s | [\t\n\x0B\f\r] | 空白符 |
| \S | [^\t\n\x0B\f\r] | 非空白符 |
| \w | [a-zA-Z_0-9] | 單詞字符,字母、數字下劃線 |
| \W | [^a-zA-Z_0-9] | 非單詞字符 |
邊界
正則表達式還提供了幾個常用的邊界匹配字符。
| 字符 | 含義 |
|---|---|
| ^ | 以xxx開頭 |
| $ | 以xxx結尾 |
| \b | 單詞邊界 |
| \B | 非單詞邊界 |
量詞
| 字符 | 含義 |
|---|---|
| ? | 出現零次或一次(最多出現一次) |
| + | 出現一次或多次(至少出現一次) |
| * | 出現零次或多次(任意次) |
| {n} | 出現n次 |
| {n,m} | 出現n到m次 |
| {n,} | 至少出現n次 |
修飾符
- g:global,全文搜索,不添加的話搜索到第一個結果停止搜索
- i:ingore case ,忽略大小寫,默認大小寫敏感
- m:multiple lines 多行搜索
分組
希望一個字符作為一個整體搜索,加上()。
或
var reg1 = /hello|world/
//等同于
var reg2 = /(hello)|(world)/