Regular Expression

ITAC #2
erickson
EE Junior Student
EE SA AAD
- Web
- PHP
- JavaScript
- MySQL
- C / C++
- Java (Novice)

what's the
Regular expression ?
Handling strings
If you want to....
- 尋找錯字(搜尋&取代)
-
過濾內容
- 設白名單
- 設黑名單
- 搭配其他程式語言抓取資料

Metacharacter
- ^ 以^後的第一個字元開頭
- $ 以$前一個字元結尾
- . 任意字元
- [] 集合 ex. [a-z] 表示a-z的集合
- [^] 差集合 ex.[^a-z] = 除了a-z的集合
- + +前的字元(集合)出現至少1次
- * *前的字元(集合)出現0次或以上
- ? ?前的字元(集合)出現0次或1次
- | 或
- \ 跳脫 (EX. \n 表示換行)
- \x+value ASCII編碼 ex. \x41 = 「A」
- \u+value Unicode ex. \u502B = 「倫」
EXAMPle
[0-9A-Za-z]
[^0-9A-Za-z]
^[0-9A-Za-z]*$
^[0-9A-Za-z]+$
^[0-9A-Za-z]?$
EXAMPle
[0-9A-Za-z]
會符合:
- A
- s
- D
- 9
不會符合:
- ADD
- sBDss
- math
- 1995
EXAMPle
[^0-9A-Za-z]
會符合:
- *
- (
- )
- 中
不會符合:
- A
- s
- D
- 9
^[0-9A-Za-z]*$
^[0-9A-Za-z]+$
^[0-9A-Za-z]?$
EXAMPle
^㊣*$
^㊣+$
^㊣?$
EXAMPle
^㊣*
^㊣+
^㊣?
EXAMPle
以㊣開頭,且㊣至少出現一次
以㊣開頭,至少出現零次
以㊣開頭,出現一次或零次
EXAMPle
以數字或大小寫英文開頭,且至少出現一次
以數字或大小寫英文開頭,至少出現零次
以數字或大小寫英文開頭,出現一次或零次
^[0-9A-Za-z]*
^[0-9A-Za-z]+
^[0-9A-Za-z]?
㊣*$
㊣+$
㊣?$
以㊣結尾,且㊣至少出現一次
以㊣結尾,至少出現零次
以㊣結尾,出現一次或零次
EXAMPle
[0-9A-Za-z]*$
[0-9A-Za-z]+$
[0-9A-Za-z]?$
EXAMPle
以數字或大小寫英文結尾,且至少出現一次
以數字或大小寫英文結尾,至少出現零次
以數字或大小寫英文結尾,出現一次或零次
^[0-9A-Za-z]*$
^[0-9A-Za-z]+$
^[0-9A-Za-z]?$
EXAMPle
以數字或大小寫英文開頭及結尾,且至少出現一次
以數字或大小寫英文開頭及結尾,至少出現零次
以數字或大小寫英文開頭及結尾,出現一次或零次
EXAMPle
^[0-9A-Za-z]*$
^[0-9A-Za-z]+$
A
B
- Ragnarok2013
- php6
- k
A B
B C
A B
A B
^[0-9A-Za-z]?$
C
A B C
EXAMPle
台北的市話 ex 02-27208889
^02-[0-9]{8}$
限制特定的email地址
^[-a-zA-Z0-9_.]+@(gmail\.com|livemail\.tw)$
EX. itac-2014.org@gmai.com
EXAMPle
台北的市話 ex 02-27208889
^02-[0-9]{8}$
EXAMPle
台北的市話 ex 02-27208889
^02-[0-9]{8}$
限制出現次數
using "{}" to limit
-
{a}
恰好A次 -
{A, B}
最少A次,最多B次
EXAMPle
台北的市話 ex 02-27208889
^02-[0-9]{8}$
以02-開頭,後面接著8個數字並結束
EX.
02-12345678
02-86665522
EXAMPle
限制特定的email地址
^[-a-zA-Z0-9_.]+@(gmail\.com|livemail\.tw)$
EXAMPle
限制特定的email地址
[-a-zA-Z0-9_.]+
限定只能有「-」、「_」、「.」、英文和數字且出現1次以上

About " . "
point
- .
any chartecther
- [.]
- \.
EXAMPle
限制特定的email地址
[-a-zA-Z0-9_.]+@
EXAMPle
限制特定的email地址
[-a-zA-Z0-9_.]+@(gmail\.com|livemail\.tw)
EXAMPle
限制特定的email地址
[-a-zA-Z0-9_.]+@(gmail\.com|livemail\.tw)
point
EXAMPle
限制特定的email地址
[-a-zA-Z0-9_.]+@(gmail\.com|livemail\.tw)
OR
EXAMPle
限制特定的email地址
[-a-zA-Z0-9_.]+@(gmail\.com|livemail\.tw)
限定OR的範圍
gmail.com 或 livemail.tw
EXAMPle
限制特定的email地址
[-a-zA-Z0-9_.]+@gmail\.com|livemail\.tw
如果拿掉( )
[-a-zA-Z0-9_.]+@gmail\.com 或 livemail\.tw
practice
TRy to filtEr...
-
英文開頭
-
不能出現數字
-
只能是gmail.com或yahoo.com.tw的信箱,且帳號只能用英文和數字
-
檢查手機號碼格式(開頭09,共十位數)
TRy to filtEr...
-
英文開頭
-
不能出現數字
-
只能是gmail.com或yahoo.com.tw的信箱,且帳號只能用英文和數字
-
檢查手機號碼格式(開頭09,共十位數)
[a-zA-Z].* /* OR */ ^[a-zA-Z].*
[^0-9]*
[a-zA-Z0-9]+@(gmail\.com|yahoo\.com\.tw)
09[0-9]{8}
實作留言板表單過濾
via javaScrIpt
Books
精通正規表達式
Mastering regular expressions

demo
抓學校課程資料
REGULAR EXPRESSION
By Erickson Juang
REGULAR EXPRESSION
- 1,252