# 正則表達式
正則表達式就是一個表達式,用來查找一個有指定【特點】的表達式,規則匹配的。
# 正則表達式定義的方式
```
var reg = /abc/;
var reg = new RegExp('abc');
推薦使用字面量的方式,如同數組和對象一樣,推薦使用字面量的創建方式
# 正則表達式使用方法
```
reg.test(str);
str.match(reg);
# 特殊屬性 i/g/m
g代表的是global全局匹配
i代表ignoreCase忽略大小寫,
m代表multiline多行匹配,
# 特殊字符
具有特殊含義的字符。
\ 轉義字符
| 或
## 方括號
```
[abc] 查找方括號內的任意一個字符
[^abc] 查找任何不在方括號內的字符
[0-9] 查找0-9之間的數字
[a-z] 查找任何小寫字母
[A-Z] 查找任何大寫字母
[A-z] 查找任何字母
(red|blue|green) 查找指定字符串(子表達式)
## 元字符
```
. 查找單個字符,除了換行和行結束符。
\w 查找單詞字符
\W 查找非單詞字符
\d 查找數字
\D 查找非數字
\s 查找空白字符
\S 查找非空白字符
\b 查找單詞邊界
\B 查找非單詞邊界
\n 查找換行符
\f 查找換頁符
\r 查找回車符
\t 查找製表符
\v 查找垂直製表符
\uxxx 查找以十六位進制數xxxx規定的Unicode字符
## 量詞
以下均遵循貪婪匹配:
n+ 匹配任何包含至少一個n的字符
n* 匹配任何包含0個或多個n的字符
n? 匹配任何0個或一個n的字符
n{X} 匹配X個n的序列字符串
n{X,Y} 匹配X至Y個n的序列字符串
n$ 匹配以n結尾的字符串
^n 匹配任何以n開頭的字符串
?=n 匹配任何後面緊接着指定字符串n的字符串
?!n 匹配任何其後沒有緊接着指定字符串n的字符串
非貪婪匹配:
n+? n*? ...
## 補充
```
(?:n) 匹配時子表達式中沒有這一項(不補獲分組)
# RegExp對象屬性
global 查看RegExp對象是否具有g標誌
ignoreCase 查看RegExp對象是否具有i標誌
multiline 查看RegExp對象是否具有m標誌
source 查看正則表達式源文本
lastIndex 一個整數標誌開始下一次匹配的字符位置(一般與exec一起使用)
# RegExp對象方法
compile 編譯正則表達式。 (就是改變這個正則表達式)
exec 檢索字符串中指定的值。返回找到的值,並確定其位置。
test 檢索字符串中指定的值。返回 true 或 false。
# 字符串方法
search 檢索正則表達式相匹配的值
match 查找所有符合正則匹配條件的結果
replace 替換與正則表達式匹配的字符串
split 把字符串分割成數組(注: 用字表達式分割的話會保留子表達式)
```
1. 正則表達式實現aabb的形式變成bbaa
2. 給10000000000三位打點 變成 10.000.000.000
3. 字符串去重 aaaaaaaaaaaaaaaaaaaaaabbbbbbbbcccccccccc變成abc
4. 把the-first-name轉換成小駝峯式theFirstName