整潔的正規表示式教程,這很容易理解

2021-09-08 17:38:15 字數 3682 閱讀 7176

編寫驗證規則最流行和最簡單的方法就是正規表示式了。但唯一的乙個問題是正規表示式的語法太隱晦了,讓人蛋疼無比。非常多開發人員為了在專案中應用複雜的驗證。經常要使用一些小抄來記住正則式的複雜語法和各種經常使用命令。

人人都看得懂的正規表示式教程

或許你是剛開始學習的人。那以防萬一。我先來講講什麼是正規表示式吧:

正規表示式能夠幫助我們更好的描寫敘述複雜的文字格式。一旦你描寫敘述清楚了這些格式。那你就能夠利用它們對文字資料進行檢索、替換、提取和改動操作。

以下有乙個正規表示式的簡單樣例。第一步先要引入有關正則式的命名空間:

using system.text.regularexpressions;
第二步就是用指定的正則式構建乙個正規表示式物件,以下的正則式是用來搜尋長度為10的a-z的英文本母:

regex obj = new regex("[a-z]");
最後,依據正則式在指定資料中檢索匹配項,假設匹配ismatch方法就會返回true。

messagebox.show(obj.ismatch(「shivkoirala」).tostring());
記住正則語法最好的辦法就是記住這三樣東西:bracket(括號), caret(插入符號)和dollars(美元符號)。

b在正規表示式中有3種型別的括號

方括號 「[「和花括號「"

上面的這條正則式僅僅能匹配a-z的英文本母。相同是在中括號裡標明匹配範圍。

花括號裡則是標明匹配字串的最小長度和最大長度。

最後為了讓表示式更規則,分別在開頭和結尾加上了插入符號"^"和美元符號"$"。

好了,如今我們就用上面的3條語法來實現一些正規表示式的驗證規則吧。

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

shivkoirala
讓我們開始第乙個驗證,輸入的字元在a-g之間?

[a-g]
輸入的字元在a-g之間而且長度為3?

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

[a-g]
我怎樣在匹配像91230456, 01237648那樣的固定8位數?

^[0-9]$
怎樣驗證最小長度為3最大長度為7的數字。如:123, 1274667, 87654?

^[0-9]$
怎樣驗證像lji1020那樣的發票編號,前3個是字母剩餘為8位長度的數字?

前三個是字母:

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

[0-9]
所以整個表示式為:

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

在前面的表示式中僅僅能匹配前3個是小寫英文本母的發票編號。假設我們輸入大寫字母那就不能匹配了。所以為了確保前3個字母是不區分大寫和小寫的,我們就要用表示式^[a-za-z]。

^[a-za-z][0-9]$
我們能夠驗證簡單的**url格式嗎?

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

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

. [a-z]
第三步:以.com或者.org結束:

. (com|org)$
完整的表示式例如以下:

^www[.][a-z][.](com|org)$
讓我們在來看看bcd(事實上也就是上面說的3條基本的語法)怎樣驗證email格式。

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

^[a-za-z0-9]@
第二步:@後面是長度在1-10的英文本母,後面跟乙個".":

[a-za-z].
第三步:最後以.com或.org結束:

.(com|org)$
最後完整的表示式例如以下:

^[a-za-z0-9]@[a-za-z].(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. 首先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格式的日期的正規表示式為:

^([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格式的日期:

^([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格式的日期:

^(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])$
你也能夠用下面的快捷命令來簡化你的正規表示式:

實際命令

快捷命令

[0-9]

d

[a-z][0-9][_]

w

0次或多次發生

*

至少一次發生

+

0次或1次發生

?

全文完。 

很全的正規表示式

感謝作者的辛勤整理,正好最近寫python時要用到,實在是太感謝了 一 校驗數字的表示式 二 校驗字元的表示式 三 特殊需求表示式 網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 ...

正規表示式 教程

引言 什麼是正規表示式?準備工作 匹配單個字元 匹配固定單個字元 匹配任意單個字元 匹配 元字元 匹配字元組 字元組的基本語法 在字元組中使用字元區間 反義字元組 匹配特殊字元7 匹配元字元 匹配空字元 匹配特定字元型別9 匹配數字型別 匹配字母 數字 下劃線 匹配空字元 匹配多個字元 匹配乙個或多...

正規表示式教程

正規表示式定義 正規表示式應用 正規表示式建立 第一種方式 var exeg new regexp 檢索內容 修飾符 第二種方式 var exeg 檢索內容 修飾符 正規表示式的使用 第一種方式 var str hello wolrd var exeg new regexp e console.lo...