正規表達式
Regular Expression
表達一串文字是否符合特定規則(pattern)的搜尋用模型
頭尾會以斜線/包住
斜線後方可再加上額外的搜尋條件
例如/^09\d{2}-?\d{3}-?\d{3}$/
是一串表達手機號碼的正規表達式
可用來判斷一串數字是否符合手機號碼的規則
有提供一系列的特殊符號表達對應的文字規律
例如上面範例
\d是代表「任意數字」的意思
{2}是指「這個字元(\d ,即任意數字)會出現2次」
?是「這個字元(-)沒有出現,或者只出現一次」
就會變為09+2 個任意數字+(0 或 1 個 -+3 個任意數字 )(重複2次)
常用符號
指定字元
table:指定字元
. 任意字元 .n
[] 指定字元 [aeiou]
() 指定字串 (string)
- 範圍字元 [a-zA-Z]
^ 排除字元 [^a]
字元數量
table:字元數量
* 任意數量 bo*
+ 至少一個 a+
? 零或一個 e?le?
{數量} 指定數量 a{2}
{下限, 上限} 指定範圍 a{1, 3}
字元位置
table:字元位置
^ 以此開頭 ^A
$ 以此結尾 t$
特殊字元
table:特殊字元
\d 數字 等同 [0-9]
\w 文數字與底線字元(_) 等同 [A-Za-z0-9_]
\s space 字元 等同 [\n\r\t]
\D 排除數字
\W 排除文數字
\S 排除 space 字元
\n 換行符號 line feed
\r 換行符號 carriage return
\t 定位字元 tab
\v 垂直定位字元 vertical tab
換行符號
目前存在:
1. LF(Line feed,U+000A)
2. CR(Carriage Return,U+000D)
3. 兩者併用的 CR+LF
由於字元集與系統差異
可以使用 [\r\n] 來選取所有換行符號
想要選取這些特殊字元,都需要在前面加上 \
[\$.|?*+( )
由於具有特殊意義
例如:\$、\*
常用範例
西元生日
/^[1-9]\d{3}-\d{2}-\d{2}$/
身分證字號
/^[A-Z]\d{9}$/
/^\w+@gmail.com$/
四則運算式
/^[\d+-*\/]*$/
需啟用正規表達式搜尋功能(Alt+R)
不需在前後加上//
可用Alt + Enter一次選取所有符合規則的字元
宣告
需先宣告一前後由/包圍的字串
var re = /ab+c/;
或呼叫RegExp物件的建構函式
var re = new RegExp('ab+c');
函式
搜尋str字串是否有部分符合
回傳boolean
搜尋str字串是否有部分符合
回傳Array
若無則回傳null
搜尋str字串是否有部分符合
回傳Array
若無則回傳null
搜尋str字串是否有部分符合
回傳index
若無則回傳-1
搜尋str字串是否有部分符合
以newSubstr取代該內容
Modifiers
指定進一步的選取條件
於第二個斜線後再加上modifier
例如:var patt = /w3schools/i
會指定大小寫也要完全一致
table:Modifiers
g 搜尋所有對應內容
i 搜尋大小寫完全一致
m 搜尋多行內容
正規表達式的漏洞