Regex入門篇

來源:互聯網
上載者:User

Regex可以協助我們更好的描述複雜的文字格式設定。一旦你描述清楚了這些格式,那你就可以利用它們對文本資料進行檢索、替換、提取和修改操作。

下面有一個Regex的簡單例子。第一步先要引入有關正則式的命名空間:

Codeusing System.Text.RegularExpressions;第二步就是用指定的正則式構建一個Regex對象,下面的正則式是用來搜尋長度為10的a-z的英文字母: CodeRegex obj = new Regex(“[a-z]{10}”);
最後,根據正則式在指定資料中檢索匹配項,如果匹配IsMatch方法就會返回true。

CodeMessageBox.Show(obj.IsMatch(“shivkoirala”).ToString());
3個重要的正則式命令

 

記住正則文法最好的辦法就是記住這三樣東西:Bracket(括弧), caret(插入符號)和Dollars(貨幣符號)。

 B 在Regex中有3種類型的括弧


方括弧 “[“和花括弧“{“ 。

方括弧"["內是需要匹配的字元,花括弧"{"內是指定匹配字元的數量。

圓括弧“(“ 則是用來分組的。
 
C 插入符號 “^” 表示正則式的開始。
D 貨幣符號“$” 表示正則式的結束。


現在你知道上面的3個文法後,你就可以寫世界上任何一條驗證規則了。比如下面的例子就很好的說明了上面3條正則文法是如何協調運作的。

上面的這條正則式只能匹配a-z的英文字母,同樣是在中括弧中標明匹配範圍。
花括弧中則是標明匹配字串的最小長度和最大長度。
最後為了讓運算式更規則,分別在開頭和結尾加上了插入符號"^"和貨幣符號"$"。
好了,現在我們就用上面的3條文法來實現一些Regex的驗證規則吧。

檢查使用者是否輸入了shivkoirala?

Codeshivkoirala讓我們開始第一個驗證,輸入的字元在a-g之間? Code[a-g]
輸入的字元在a-g之間並且長度為3?

Code[a-g]{3}
輸入的字元在a-g之間並且最大長度為3最小長度為1?

Code[a-g]{1,3}
我如何在匹配像91230456, 01237648那樣的固定8位元?

Code^[0-9]{8}$如何驗證最小長度為3最大長度為7的數字,如:123, 1274667, 87654? Code^[0-9]{3,7}$
如何驗證像LJI1020那樣的發票編號,前3個是字母剩餘為8位長度的數字?

前三個是字母:

Code^[a-z]{3}
後面是8位長度的數字:

Code[0-9]{8}
所以整個運算式為:

Code^[a-z]{3}[0-9]{7}$
驗證像INV190203 或 inv820830那樣的前3位是不區分大小寫英文字母,剩餘8位是數字

在前面的運算式中只能匹配前3個是小寫英文字母的發票編號,如果我們輸入大寫字母那就不能匹配了。所以為了確保前3個字母是不區分大小寫,我們就要用運算式^[a-zA-Z]{3}。

完整的正則式如下:

Code^[a-zA-Z]{3}[0-9]{7}$
我們可以驗證簡單的網址URL格式嗎?

第一步:檢查是否存在www:

Code^www.
第二步:網域名稱必須是長度在1-15的英文字母:

Code. [a-z]{1,15}
第三部:以.com或者.org結束:

Code. (com|org)$
完整的運算式如下:

Code^www[.][a-z]{1,15}[.](com|org)$
讓我們在來看看BCD(其實也就是上面說的3條基本文法)如何驗證email格式

第一步:email開始是長度在1-10的英文字母,最後跟一個"@":

Code^[a-zA-Z0-9]{1,10}@
第二步:@後面是長度在1-10的英文字母,後面跟一個".":

Code[a-zA-Z]{1,10}.
第三步:最後以.com或.org結束:

Code.(com|org)$
最後完整的運算式如下:

Code^[a-zA-Z0-9]{1,10}@[a-zA-Z]{1,10}.(com|org)$
驗證值在0-25的數字:

Code^(([0-9])|([0-1][0-9])|([0-2][0-5]))$
驗證格式為MM/DD/YYYY, YYYY/MM/DD and DD/MM/YYYY的日期:

步驟
 正則式
 描述說明
 
先來檢查 DD. 首先DD的長度為1-29 ( 2月份) , 1-30 (月小) , 1-31 (月大) .

所以 DD 就是 1-9 或 01-09
 [1-9]|0[1-9]
 允許使用者輸入1-9或者01-09.
 
再為DD添加匹配10-19
 [1-9]|1[0-9]
 允許使用者輸入01-19.
 
再為DD添加匹配20-29
 [1-9]|1[0-9]|2[0-9]
 允許使用者輸入01-29.
 
i再為DD添加匹配30-31
 [1-9]|1[0-9]|2[0-9]|3[0-1]
 最後使用者可以輸入01-31.
 
再來匹配日期間的分隔字元"/","-"
 [/ . -]
 允許使用者輸入日期分隔符號.
 
MM也是類似的操作
 [1-9]|0[1-9]|1[0-2]
 讓使用者輸入月份值01-12.
 
最後就是YY的操作
 1[9][0-9][0-9]|2[0][0-9][0-9]
 允許使用者輸入年份1900-2099.
 

最後DD/MM/YYYY格式的日期的Regex為:

Code^([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])[- / .]([1-9]|0[1-9]|1[0-2])[- / .](1[9][0-9][0-9]|2[0][0-9][0-9])$
MM/DD/YYYY格式的日期:

Code^([1-9]|0[1-9]|1[0-2])[- / .]([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])[- / .](1[9][0-9][0-9]|2[0][0-9][0-9])$
YYYY/MM/DD格式的日期:

Code^(1[9][0-9][0-9]|2[0][0-9][0-9])[- / .]([1-9]|0[1-9]|1[0-2])[- / .]([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])$
快捷命令

你也可以用以下的快捷命令來簡化你的Regex

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.