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
  •        
  • google
  • 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

中文版ISBN:

978-9862764404

英文版ISBN:

978-0596528126

demo

抓學校課程資料

REGULAR EXPRESSION

By Erickson Juang

REGULAR EXPRESSION

  • 1,151