iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Software Development

第一次學C#的經驗談系列 第 14

Day14主題:認識正規表示法

  • 分享至 

  • xImage
  •  

正規表示式(Regular Expression,簡寫為regex),又稱正規表達式、正規表示法、規則運算式、常規表示法。
正規表示式用來操作字串,透過某個規則(pattern)的來檢索、搜尋字串裡符合條件的文字。
所以也常用在對純文字的文件進行解析,例如:txt、html、xml、json檔案,從中萃取出所需要的文字,或是針對純文字檔案來進行處理。

1. 小技巧:

  • 善用「^」標示起始位置,例如Regex("^Abc")只會找Abc開頭的字串,而aAbc就忽略。
  • 善用「\b」偵測字元邊界,和「^」意思很類似。
  • 善用「.?」忽略後續字串,例如Regex("^A.?")只比對字串第一個字是否為A,後面忽略。

2. 數字:以數字為基礎的規則。

  • 只能輸入數字:「^[0-9]*$」
  • 只能輸入n位的數字:「^\d{n}$」
  • 只能輸入至少n位數字:「^\d{n,}$」
  • 只能輸入m-n位的數字:「^\d{m,n}$」
  • 只能輸入零和非零開頭的數字:「^(0|[1-9][0-9]*)$」
  • 只能輸入有兩位小數的正實數:「^[0-9]+(.[0-9]{2})?$」
  • 只能輸入有1-3位小數的正實數:「^[0-9]+(.[0-9]{1,3})?$」
  • 只能輸入非零的正整數:「^\+?[1-9][0-9]*$」
  • 只能輸入非零的負整數:「^\-[1-9][0-9]*$」
  • 只能輸入長度為3的字符:「^.{3}$」

3. 文字:以字元為基礎的規則。

  • 只能輸入由26個英文字母組成的字符串:「^[A-Za-z]+$」
  • 只能輸入由26個大寫英文字母組成的字符串:「^[A-Z]+$」
  • 只能輸入由26個小寫英文字母組成的字符串:「^[a-z]+$」

4. 混編:整合數字及字元的規則。

  • 只能輸入由數字、26個英文字母組成的字符串:「^[A-Za-z0-9]+$」
  • 只能輸入由數字、26個英文字母或者下劃線組成的字符串:「^\w+$」
  • 驗證用戶密碼:「^[a-zA-Z]\w{5,17}$」
  • 正確格式為:以字母開頭,長度在6-18碼之間,只能包含字符、數字和下引線。

5. 其它:特殊規則。

  • 驗證是否含有「^%&',;=?$"」等字符:「[^%&',;=?$\x22]+」
  • 只能輸入漢字:「^[\u4e00-\u9fa5],{0,}$」
  • 驗證Email地址:「"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"」
  • 驗證Internet URL:「^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$」
  • 驗證電話號碼:「^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$」
    -> 正確格式為:「1234-1234567」,「1234-12345678」,「123-1234567」,「123-12345678」,「1234567」,「12345678」。
  • 驗證一年的12個月:「^(0?[1-9]|1[0-2])$」
    -> 正確格式為:「01」-「09」和「10」、「11」、「12」。
  • 驗證一個月的31天:「^((0?[1-9])|((1|2)[0-9])|30|31)$」
    -> 正確格式為:「01」-「09」和「10」-「29」及「30」、「31」。

6. 範例:驗證手機號碼對不對。
https://ithelp.ithome.com.tw/upload/images/20220914/20142779n1XRytnYLE.png

  • 先了解手機號碼規則。
  • 09開頭。
  • 一定是0-9數字。
  • 尾碼有8碼。

參考來源:
C#驗證控制項的使用方法(RegularExpressionValidator)的使用

正規表示式正則表達式


上一篇
Day13主題:認識陣列
下一篇
Day15主題:認識物件與類別
系列文
第一次學C#的經驗談30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言