正規表示式基礎教程

2021-07-25 10:59:27 字數 4354 閱讀 1704

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

在這篇文章中,我將試圖讓大家明白什麼是正規表示式,以及如何更輕鬆地學習正規表示式。

也許你是初學者,那以防萬一,我先來講講什麼是正規表示式吧:

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

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

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

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

messagebox.show(obj.ismatch(「shivkoirala」).tostring());
3個重要的正則式命令

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

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

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

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

檢查使用者是否輸入了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][_]

w0次或多次發生

*至少一次發生

+0次或1次發生?

JS基礎教程 正規表示式示例 推薦

正規表示式的 有不同的意思。是為了提取匹配的字串。表示式中有幾個 就有幾個相應的匹配字串。s 表示連續空格的字串。是定義匹配的字元範圍。比如 a za z0 9 表示相應位置的字元要匹配英文本元和數字。s 表示空格或者 號。一般用來表示匹配的長度,比如 s 表示匹配三個空格,s 1,3 表示匹配一到...

正規表示式 教程

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

正規表示式教程

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