參考資料
大綱
- Regex 實用工具
- 使用情境
- 常用旗幟 flag (g/i/m)
- 常用 特殊標點字元 ( . , ^ , $ , \ , |)
- 中括號 [ ] 用法 (限定範圍)
- 限定出現次數 ( * , + , {} )
- 常用 縮寫 (\d數字,\w,\s空白字元)
- 一些範例
Regex 工具
使用情境
- 表單驗證 pattern 屬性
- 取代文字
- 搜尋關鍵字 (VSCode內也可搜尋檔案用)
常用的旗幟 flag (i/g/m)
- g 全域 (Global)
- i 忽略大小寫 (Case-Insensitive)
- m 多行文字 (multiline) 範例如下
const str = 'testA\ntestB\ntestC'
console.log(str.replace(/test/, 'Hey'))
console.log(str.replace(/test/g, 'Hey'))
console.log(str.replace(/^test/g, 'Hey'))
console.log(str.replace(/^test/gm, 'Hey'))
常用 特殊標點字元
- (.) 點號 代表 任意字元,亦可為無
- (^test) 代表以 test 開頭
- (test$) 代表以 test 結尾
- () 反斜線 代表 跳脫字元
- ( 98 | 95 | 100 ) 直槓 代表 OR
中括號 [ ] 用法 (限定範圍)
- [b-z] 小寫的 b 到 z
- [a-zA-Z] 同時包含大小寫的 a 到 z
- [4-9] 4 到 9
- [a-z0-9] 中括號可以包括多個範圍
限定出現次數 ( . / + / {} )
- (*) 米字號 代表 任意 次數
- (+) 加號 代表 一 或 一次以上
- (?) 問號 代表 零 或 一次
- {2} 大括號 代表 限定次數
- {2,} 逗號 代表 至少要超過 2 個以上
- {,3} 逗號 代表 至多 3 個以上
- {2,9} 逗號 代表 至少 2 個 至多 9 個
const data = 'test\ntest1\ntest12\ntest123'
const Plus1 = /test./gm
const Any = /test.*/gm
const Over1 = /test.+/gm
const OneOrNone = /test.?/gm
const WithTwo = /test.{2}/gm
const OverTwo = /test.{2,}/gm
const OverTwoLessNine = /test.{2,9}/gm
常用 縮寫 (\d Digital \w Word \s Space)
- \d 代表 數字 等同於 [0-9]
- \D 代表 非數字 等同於 [^0-9]
- \w 代表 數字、字母、底線 等同 [a-zA-Z0-9_]
- \W 代表 非 \w 等同 [^a-zA-Z0-9_]
- \s 代表 空白字元 等同 [\r\t\n\f]
- \S 代表 非 空白字元 等同 [^\r\t\n\f]
- \t 代表 TAB 鍵
- \n 代表 換行
範例
const PhoneRegex = /^09[0-9]{8}$/
const urlRegex = /https?:\/\/[a-zA-Z0-9\.\/]+/