2009年10月21日 星期三

欄位驗證-Regular Expression的基本運算

Union運算以""表之,L和R的union寫成L R,表示可以是L或是R。
Concatenation運算以"."表之,L和R的concatenation寫成L.R,通常都省略L和R之間的".",而寫成LR,表示L之後要跟隨著R。
Closure(也稱做Kleene closure) 運算以"*"表之,L的closure寫成L*,表示字串L可以重複出現0次以上,即ε、L、LL、LLL、…,都是可以接受的字串,其中"ε"表示空字串;LL表示L和L的concatenation,也可以簡寫成L2;LLL表示三個L的concatenation,也可以簡寫成L3;而L0=ε,L1=L;其餘類推。

ASP.NET中的Regular Expressions


Closure運算都不用上標的寫法,全部都寫在同一行中,例如a3要寫成a{3}。
增加了一些運算符號: (例如)
\d表示一個0到9的數字
\D表示是0到9以外的一個字元
\w表示是一個英文字母或數字
\W表示是除了英文字母和數字以外的字元
由於(、)、[、]、{、}、|、…等符號都是ASP.NET中regular expression的運算符號,如果有些字串中確實有這些符號,但卻不是regular expression中的運算符號時,可在該符號之前加上反斜線"\"以玆區別。
例如電話號碼(02)12345678的regular expression寫法是\(02\)12345678。


ASP.NET中Regular expressions的運算符號(1/2)

符號 說明
* Closure運算,表示出現0次以上,例如:abc*表示ab後跟隨0個以上的c。
+ Positive closure運算,表示出現1次以上,例如:abc+表示ab後跟隨1個以上的c。
| Union運算,表示"|"左邊或右邊的regular expression皆可,例如:ab|cd表示ab或cd皆可。
() 和一般算式一樣,小括號內的regular expression先處理,例如:a(b|c)d表示abd或acd皆可。
[] 中括號內的任何一個字元,當字元之間重複使用"|"運算時,以"[]"取代較簡潔,例如:x(a|e|i|o|u)y也可以寫成x[aeiou]y較簡潔。
{} 表示有範圍的closure運算,例如:a{5}表示aaaaa等5個a;a{3,6}表示3個a到6個a皆可;a{3,} 表示3個以上的a皆可。
[-] 若中括號內是連續的字元,則可以用"-"表之,例如:[d-m] 表示d到m之間的任何一個字元。
[^] 非中括號內的任何一個字元,例如:a[^cde]f表示a和f之間的字元不可以是c、d或e。
\ 用來表示運算符號中的字元,例如:\(02\)表示輸入的字串為(02),因為小括號是運算符號,寫成regular expression (02)表示輸入的字串為02。