驗證控制項 RegularExpressionValidator 基本的特殊定義字元●[] 用來設定可以接受的字元
[abcde]表示只接受abcde五個小寫英文字母
[0-9]表示只接受10個阿拉伯數字
[a-zA-Z]表示只接受大小寫的英文字母
[^0-9]表示除了0-9以外的字視都接受(^表示差集合)
[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
[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"
f.x 代表任何f開頭,x結尾, 共3個字的字串 T...y 代表T開頭,y結尾, 共5個字的字串
T.{3}y 同上面的 "T...y"
●^為差集合,不包含的意思
[^0-9a-z]..Z 代表搜尋所有前面不是數字和小寫英文字, 中間夾著兩個任意字元 , 最後接著大寫Z的字串
[^0-9a-z]..Z 代表搜尋所有前面不是數字和小寫英文字, 中間夾著兩個任意字元 , 最後接著大寫Z的字串
●| 表示邏輯運算子的or
●() 用來區隔規則運算式,以方便閱讀
●\ 上述的字元都是規則運算式中的定義符號,如果要輸入的字元必須含有這些符號,就必須在這些符號前加上倒斜線\
●計算數量用的中繼字元
? 代表前面的項目重複0次或1次
* 代表前面的項目重複0~無限次
+ 代表前面的項目重複1~無限次
? 代表前面的項目重複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就不符合了 |
\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驗證字符語言不同,字符或有差異…如有錯誤請大家幫忙更正,也提供大陸那邊的文章 給大家參考)