正規表示式入門

2021-08-05 22:07:56 字數 4854 閱讀 6265

正規表示式一直都是我畏懼的知識點,之前也嘗試著學習,但最終還是放棄了。由於正則在專案中經常能用的到,所以最近強迫自己花空閒時間學習了些簡單的正則知識,並將了解到的知識總結在本文中,希望對大家有所幫助。大家在學習正則的時候不要有畏懼的心理,其實正則入門還是比較容易的。

正規表示式是由原意文字字元(a,b,c,1,2,3等)和元字元( . * ? 等)組成來匹配指定內容的表示式。

原意文字字元

原意文字字元是正則中最基本的字元,比如:

元字元

指在正規表示式中有特殊含義的專用字元,比如:

常用的元字元:

元字元含義

舉例\轉義字元,將後乙個字元標記為特殊字元或將元字元轉為原意字元

1、\\表示匹配原意字元\

2、\.表示匹配英文句號「.」;

3、\d表示匹配數字。

.匹配除換行(\n)以外的所有字元

abc.能匹配到「abc」後面的那個字元,比如「abc」後面的空格、字母、數字、漢字等

^匹配字串的開始位置,在集合()中表示「非」

1、^\d\d\d能匹配「123」、「666」等,但不能匹配「a123」、「b123」、「-123」等;

2、^\w+\b表示匹配第乙個單詞;

3、[^ajl]匹配除了「a」、「j」、「l」以外的任意字元。

$匹配字串的結束位置

^\d\d\.\d\d$能匹配「12.01」和「00.00」等,但不能匹配「0.00」、「12.0」、「123.00」等

?匹配前面子表示式0次或一次

good?可以匹配「goo」和「good」等,但是不能匹配「go」等

+

*匹配前面子表示式0次或多次

zo*能匹配「zo」、「zoo」、「zooo」

()標記乙個子表示式的開始和結束位置,其結束符號「)」元字元

[字元組的起始符號,其結束符號「]」不是元字元

」不是元字元

|表示「或」

1、a|b|c匹配「a」、「b」、「c」之中的乙個;

如果要匹配元字元本身可以用\來取消元字元的特殊含義,比如\.匹配英文句號」.」;\*匹配「*」本身;\+匹配「+」本身……

常用表示式舉例

表示式含義舉例

\w匹配字母、數字、下劃線

abc\w表示匹配「abc」開頭並且後面跟著乙個字母或數字或下劃線的字串

\w匹配非字母、非數字、非下劃線

\w相當於[^\w]

\d匹配數字

\d\d\d表示匹配3個連續的數字

\d匹配非數字

\d相當於[^\d]

\b匹配單詞的開始或結束

\bgo\w*\b表示匹配「go」開頭的乙個單詞

\b匹配非單詞的開始或結束

\b相當於[^\b]

\s匹配任何空白字元,如回車、空格、製表符等

\s相當於[\f\n\r\t\v]

\s匹配任何非空白字元

\s相當於[^\s]

匹配前面子表示式n次

\d表示匹配連續的11個數字

匹配前面子表示式n到m次

\d表示匹配連續的7-11個數字

匹配前面子表示式n次以上

\d表示匹配連續的5個以上的數字

[xyz]表示字符集,匹配所包含的任意乙個字元

1、[abc]能匹配「a」或「b」或「c」;

2、[!?*.]表示匹配「!」、「?」、「*」、「.」中的任意乙個;

3、[^0-9]匹配所有非0到9的字元,相當於\d

[a-z]表示字元範圍,能匹配範圍內的任意乙個字元

1、[a-z]能匹配26個小寫字母中任意字母;

2、[0-9]能匹配0到9的任意數字,和\d一樣的效果;

3、[1-9]能匹配1到9的任意數字;3、[\u4e00-\u9fa5]能匹配所有漢字。

(abc)組合,將幾個項組合成為乙個單元,可以對這個單元使用限定符

(\.[a-z]+)+$可以匹配「.com」、「.net」、「.com.cn」等結尾的字元

運算子優先順序

正規表示式是從左向右進行運算的,並遵循優先順序順序。優先順序順序如下表(先高後低):

運算子優先權

說明\最高

轉義字元

()(?:)(?=)

圓括號和方括號

*+?

限定符^$\任何元字元任何字元

定位點和序列(即:位置和順序)

|最低

選擇符「或」

了解了正規表示式的基本語法後,我們就可以牛刀小試了,好記星不如爛鍵盤,多敲幾遍就就不容易忘記,下面我們通過例項進行學習(注:正則比較靈活,沒有標準的表示式,以下所有表示式僅供參考!)。

在編寫正則時可以在站長工具進行正則測試

驗證(^$)是否為手機號(中國)表示式1:^(13|15|17|18)\d$

表示式2:^(13[0-9]|15[0-9]|17[07]|18[05689])\d$

驗證(^$)是否為**號碼(中國)

**號碼一般為「區號[-]號碼」的格式,如果區號部分是3位則號碼部分為8位,如021-67678989、02167678989;如果區號部分是4位則號碼部分是7位,如0765-6767676、02167678989。

表示式1:^\d-?\d|\d-?\d$

表示式2:^(\d-?\d)|(\d-?\d)$(由於選擇符「|」優先順序最低,所以組合符號「()」加與不加都行)

驗證(^$)是否為郵箱

郵箱一般為「名稱@網域名稱」的格式,由於名稱部分格式太多(有些郵箱名稱允許有中文)不好限制,所以本文只驗證名稱和網域名稱有「英文本母」、「數字」、「下劃線」、「中劃線(-)」、「英文句號(\.)」的郵箱。

表示式:^\w+([\.-]\w+)*@[\w-]+(\.[a-za-z0-9-]+)+$

驗證(^$)是否為身份證號碼(中國)

身份證號碼是由18個字元組成,前17個必須為數字(\d),第一位不能為0([1-9]),最後一位可能是數字(\d)也可能是「x/x」([xx])。

表示式:^[1-9]\d[\dxx]$

匹配html中的a標籤的鏈結

a標籤類似為「google香港

但是也可能會有如下等特殊的情況:

經過分析得出如下表示式:

表示式:]+href[\s]*=[\s]*['"]([^"']*)['"]

匹配html中的img標籤的位址

匹配img標籤和匹配a標籤類似,只是標籤名稱和資源屬性不同。

表示式:]+src[\s]*=[\s]*['"]([^"']*)['"]

正規表示式 正則入門

先從乙個例子開始正規表示式。書寫乙個匹配手機號的正規表示式,為了方便討論,假定手機號是1開頭,第二位只能是3 5 8中的其中乙個,總共11位的數字,形如13 匹配手機號的正規表示式為 1 358 d 下面介紹此正規表示式中的各個符號的含義。表示字串的開頭,後面緊接著1,表示匹配的字串要以 1 開頭。...

正規表示式入門

對於文字字元,有11個字元被保留作特殊用途。他們是 這些特殊字元也被稱作元字元 不可顯示字元 可以使用特殊字串行來代表某些不可顯示字元 代表tab 0x09 代表回車符 0x0d 代表換行符 0x0a 字符集 字符集是由一對方括號 括起來的字元集合。使用字符集,你可以告訴正規表示式引擎僅僅匹配多個字...

正規表示式入門

老師說過 正規表示式就是用字串讀取字串!學習正規表示式的最好方法是從例子開始,理解例子之後再自己對例子進行修改,實驗。下面給出了不少簡單的例子,並對它們作了詳細的說明。假設你在一篇英文 裡查詢hi,你可以使用正規表示式hi。這幾乎是最簡單的正規表示式了,它可以精確匹配這樣的字串 由兩個字元組成,前乙...