2012-06-15

驗證控制項 RegularExpressionValidator


驗證控制項 RegularExpressionValidator 基本的特殊定義字元●[]  用來設定可以接受的字元
  [abcde]表示只接受abcde五個小寫英文字母
  [0-9]表示只接受10個阿拉伯數字
  [a-zA-Z]表示只接受大小寫的英文字母
  [^0-9]表示除了0-9以外的字視都接受(^表示差集合)
●{}  用來設定前面字元重複次數
  [0-9]{5}表示一定要鍵入5個數字字元
  [A-Z]{2,4}表示最少2個、最多4個字元且為英文大寫
  [^abc]{1,}表示最少要輸入1個字元以上,每個字元不可以是a或b或c
●.  表示可接受任意字元
  f.x  代表任何f開頭,x結尾, 共3個  T...y 代表T開頭,y結尾, 共5個字的字串
  T.{3}y 同上面的 "T...y"
●^為差集合,不包含的意思
  [^0-9a-z]..Z 代表搜尋所有前面不是數字和小寫英文字, 中間夾著兩個任意字元 , 最後接著大寫Z的字串
●|  表示邏輯運算子的or
●()  用來區隔規則運算式,以方便閱讀
●\ 上述的字元都是規則運算式中的定義符號,如果要輸入的字元必須含有這些符號,就必須在這些符號前加上倒斜線\
●計算數量用的中繼字元
?  代表前面的項目重複0次或1次
*  代表前面的項目重複0~無限次
+ 代表前面的項目重複1~無限次
● ^ 和 $ 搭配運用 , 表示符合某字開始, 某字結束的字串
一些常用的範圍,我們可以使用預先定義的字元類別:
\d等於 [0-9] 數字
\D等於 [^0-9] 非數字
\s等於 [ \t\n\x0B\f\r] 空白字元
\S等於 [^ \t\n\x0B\f\r] 非空白字元
\w等於 [a-zA-Z_0-9] 數字或是英文字
\W等於 [^a-zA-Z_0-9] 非數字與英文字








一些常用的驗證項目如下

電話號碼
[0-9]{2}-[0-9]{7}
符合如 02-3790850 的電話號碼,但若是電話號碼如082-263409就不符合了
email
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
表示1個以上的數字或是英文字
身份證
([A-Z]|[a-z])\d{9}
第一個字元可以是大小寫的英文,後面接9字元的數字
郵遞區號
\d{3}((-)?\d{2})?
前3字元為數字,-這個符號可有可無,後面再接2字元的數字(也是可有可無) 註:可有可無的符號用?,而要包含哪些字串則用()來括起
電話或手機 
((\d{10})|(((\(\d{2}\))|(\d{2}-))?\d{4}(-)?\d{3}(\d)?))
可以是10字元的數字(如0912123455);也可以是包含括號括住2字元的數字(如(08),或再加個-符號(如08-),或是…好複雜…我也亂了
網址
http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
前面一定要http,s可有可無,://都是字串,後面的
([\w-]+\.)+就是表示([\w-]+\.)這串可不停重複,而([\w-]+\.)這串就是說可以是一堆的英數字元並加上.(如abc.BCA.hht.qd.)





















心得
因為區域性的不同,所以驗證方法各異,依我觀察,現在許多網站多只驗證帳號和密碼、mail(因為網站的國際化),若是地址、電話…那真的是要花很大的工夫
再者,驗證的方法也不一定要用這種,複雜性比較高的如驗證網址也可用高級的regex方法來做,而上述的驗證字串也通用於搜尋字串
(ps驗證字符語言不同,字符或有差異…如有錯誤請大家幫忙更正,也提供大陸那邊的文章 給大家參考)
5 章老師的電腦小講堂: 驗證控制項 RegularExpressionValidator 驗證控制項 RegularExpressionValidator 基本的特殊定義字元 ●[]  用來設定可以接受的字元   [abcde]表示只接受abcde五個小寫英文字母   [0-9]表示只接受10個阿拉伯數字   [a-zA-Z]表示只接受大小寫的英文字母  ...
小講堂經過多次搬移,舊文章連結及內容較難整理~
大家可以新文章為主~
每篇文章後有代碼,任何文章問題可至FB小講堂用代碼提問唷~