正規表示式一直都是我畏懼的知識點,之前也嘗試著學習,但最終還是放棄了。由於正則在專案中經常能用的到,所以最近強迫自己花空閒時間學習了些簡單的正則知識,並將了解到的知識總結在本文中,希望對大家有所幫助。大家在學習正則的時候不要有畏懼的心理,其實正則入門還是比較容易的。
正規表示式是由原意文字字元
(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。這幾乎是最簡單的正規表示式了,它可以精確匹配這樣的字串 由兩個字元組成,前乙...