1. 程式人生 > >正則表示式入門

正則表示式入門

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

using System.Text.RegularExpressions;

第二步就是用指定的正則式構建一個正則表示式物件,下面的正則式是用來搜尋長度為10的a-z的英文字母:

Regex obj = new Regex(“[a-z]{10}”);

最後,根據正則式在指定資料中檢索匹配項,如果匹配IsMatch方法就會返回true。

MessageBox.Show(obj.IsMatch(“shivkoirala”).ToString());

3個重要的正則式命令

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

在正則表示式中有3種類型的括號
方括號 “[“和花括號“{“ 。
方括號”[“內是需要匹配的字元,花括號”{“內是指定匹配字元的數量。
圓括號“(“ 則是用來分組的。
插入符號 “^” 表示正則式的開始。
美元符號“$” 表示正則式的結束。
現在你知道上面的3個語法後,你就可以寫世界上任何一條驗證規則了。比如下面的例子就很好的說明了上面3條正則語法是如何協調運作的。
http://images.cnblogs.com/cnblogs_com/sxwgf/201111/201111170806277965.png
(譯者注:上圖有個錯誤,”()”應為”{}”)

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

檢查使用者是否輸入了shivkoirala?
shivkoirala
讓我們開始第一個驗證,輸入的字元在a-g之間?
[a-g]
輸入的字元在a-g之間並且長度為3?
[a-g]{3}
輸入的字元在a-g之間並且最大長度為3最小長度為1?
[a-g]{1,3}
我如何在匹配像91230456, 01237648那樣的固定8位數?
^[0-9]{8}37123,1274667,87654[09]3,7
如何驗證像LJI1020那樣的發票編號,前3個是字母剩餘為8位長度的數字?
前三個是字母:
^[a-z]{3}
後面是8位長度的數字:
[0-9]{8}
所以整個表示式為:
^[a-z]{3}[0-9]{7}$

驗證像INV190203 或 inv820830那樣的前3位是不區分大小寫的英文字母,剩餘8位是數字
在前面的表示式中只能匹配前3個是小寫英文字母的發票編號,如果我們輸入大寫字母那就不能匹配了。所以為了確保前3個字母是不區分大小寫的,我們就要用表示式^[a-zA-Z]{3}。

完整的正則式如下:
^[a-zA-Z]{3}[0-9]{7}$
我們可以驗證簡單的網址URL格式嗎?

第一步:檢查是否存在www:
^www.
第二步:域名必須是長度在1-15的英文字母:
. [a-z]{1,15}
第三部:以.com或者.org結束:
. (com|org)$
完整的表示式如下:
^www[.][a-z]{1,15}.$

讓我們在來看看BCD(其實也就是上面說的3條基本語法)如何驗證email格式
第一步:email開始是長度在1-10的英文字母,最後跟一個”@”:
^[a-zA-Z0-9]{1,10}@
第二步:@後面是長度在1-10的英文字母,後面跟一個”.”:
[a-zA-Z]{1,10}.
第三步:最後以.com或.org結束:
.(com|org)[azAZ09]1,10@[azAZ]1,10.(com|org)

驗證值在0-25的數字:
^(([0-9])|([0-1][0-9])|([0-2][0-5]))$

驗證格式為MM/DD/YYYY, YYYY/MM/DD and DD/MM/YYYY的日期:
這裡寫圖片描述

最後DD/MM/YYYY格式的日期的正則表示式為:
^([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])- / .- / .$

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

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

快捷命令
你也可以用以下的快捷命令來簡化你的正則表示式
實際命令 快捷命令
[0-9] \d
[a-z][0-9][_] \w
0次或多次發生 *
至少一次發生 +
0次或1次發生 ?