iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0
Software Development

如果可以,我想用30天的時間打造一間抵霸閣系列 第 28

[Day28]抵霸閣- 初步認識正則表達式

  • 分享至 

  • xImage
  •  

由於常常在回覆表單時會被限制手機欄位只能輸入數字
或是在註冊時輸入密碼要求一定要包含大小寫、數字、特殊字元等等
若不符合規則就沒辦法進行下一步
因此讓我們來了解這些輸入框背後的邏輯是怎麼驗證的

正則表達式(Regular Expression)
藉由一些標準化的方式來確保輸入在有效範圍值域內
讓原本複雜的字串改用簡單的方式來建立規則
但剛開始了解會比較難入門
不過先知道哪些很實用記起來就節省許多自己寫判斷式的時間
而且許多程式語言都支援
這樣存放資料進資料庫時才不會一下有dash或是point或空格等凌亂的東西

像是驗證電話號碼:^[0-9]{10}$
(規則1:輸入僅包含0~9的數字
規則2:總長度須剛好為10碼)

首先以^表示以0-9開頭的字串
{10}表示字串一共10碼
$表示字串的結尾

主要常用到的正則表達式符號還有像是以下列出的幾點
[^]表示在中括號內的字元都排除
.表示任一字元
\d表示任意數字
(所以剛才驗證電話號碼的表達式也可以改寫成^\d{10}$)
\D 表示除了數字以外的字元(相當於[^0~9])
*:表示0或多次
?:表示0或1次
[a-zA-Z] :小寫 a-z 和大寫 A-Z 之間字元都是合法的
\w :文字和底線都是合法的(相當於[a-z\dA-Z_])
\W:非文字字元是合法的(像標點符號or特殊字元等)
\s:空格字元是合法的
\S:只要是非空格字元是合法的

知道了以上規則後
便可以自己組合出想要的驗證方式
譬如說簡單的驗證身分證字號用^[A-Z]\d{9}$
就是建立開頭要是A-Z間的大寫英文字母後面接9碼數字
但這些都只是最基本的判斷
若真的要驗證是否合法的話還可以加上判斷首位數字是否為1或2(生理男或生理女)
末碼是否有符合設定規則等等
可繁可簡 主要看需求有沒有真的那麼嚴謹


上一篇
[Day27]抵霸閣-程式中常見的蟲子
下一篇
[Day29]抵霸閣-你比較喜歡哪種型呢?
系列文
如果可以,我想用30天的時間打造一間抵霸閣30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言