# Regex @@
## pattern flag
符號
/^\d{3}$/g
特色都被斜線包住的叫做 pattern //
尾部叫做flag
^\d{3}$ 是 pattern
g 是 flag
## 危險
已經發展20幾年了 用不好會造成部分機器卡住(無窮迴圈),記憶體塞滿
## 字元種類
```js
首先先介紹 陣列符號
`單選的下拉式選單`
/[abc]/
abc 只有匹配a
/[^abc]/
abcde 只有匹配d
.
接下來介紹 插入符號 錢符號
`頭部^ 尾部
Regex @@ | Richard's Blog
/^1/
123451 只有匹配第一個1
/1$/
123451 只有匹配尾部1
/^123$/ ...
.
接下來介紹 加號
`1~無限`
/a+/
aaabcbaa 匹配前面aaa
.
接下來介紹 星號
`0~無限`
/a+/ ...
.
接下來介紹 問號
`可有可無 若有只會匹配一次`
/ab?/
abb 匹配前面ab
aaa 匹配前面a
.
接下來介紹 花刮號{}
`出現次數`
/ab{3}/
abbbbb 匹配前面abbb
/ab{3,4}/
abbbbb 匹配前面abbbb
/ab{3,}/
abbbbb 匹配前面abbbbb 無限b
.
接下來介紹 or符號|
`2選1`
/a|b/
cba 匹配b
cab 匹配a
.
接下來介紹 反斜線
就是逃脫字元
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
. 所有不包含換行 \w word字母和數字還有_底線 \W w相反 有包換行 小心特殊符號
\d digit數字 \D d相反 有包換行 小心
\s 空白和換行和tab和各式各樣空白 \S s相反
/.../ 不寫 第一個就返回 且 是單行模式 /.../g global 匹配到不能匹配為止
/.../m multiline 多行模式
/.../i case insensitive 忽略大小寫
/.../s single line 都當一行
\p{L} 屬於letter的字
正則.test(文字) 文字.match(正則)
正則 預設式 *貪婪greedy *?懶惰lazy
let str = titanic let regxGreedy = /t[a-z]i/ let regxLazy = /t[a-z]?i/
貪婪我都要符合 ["titani"] 懶惰大概就好 ["ti"]
注意不要拿來比對HTML元素
/<.*?>/gi 意思是 角括號裡面隨便啦
介紹UTF-8八進制
\127
parsInt('101',8) //65
(65).toString(8) //A的碼是65(10),101(8)
/\101/ 可以找到 'A'
介紹UTF-8十六進制
\x57 可以找到 'W'
介紹十六進制 C/C++/Java source code
\u0057 可以找到 'W'
1
2
3
4
5
6
7
8
9
10
11
12
先行斷言 () capturing group ?: is for non capturing group
?= is for positive look ahead
?! is for negative look ahead
?<= is for positive look behind
?<! is for negative look behind