阿里大佬整理的常用正則表示式大全

一、校驗數字的表示式

1。 數字:^[0-9]*$

2。 n位的數字:^\d{n}$

3。 至少n位的數字:^\d{n,}$

4。 m-n位的數字:^\d{m,n}$

5。 零和非零開頭的數字:^(0|[1-9][0-9]*)$

6。 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(。[0-9]{1,2})?$

7。 帶1-2位小數的正數或負數:^(\-)?\d+(\。\d{1,2})?$

8。 正數、負數、和小數:^(\-|\+)?\d+(\。\d+)?$

9。 有兩位小數的正實數:^[0-9]+(。[0-9]{2})?$

10。 有1~3位小數的正實數:^[0-9]+(。[0-9]{1,3})?$

11。 非零的正整數:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$

12。 非零的負整數:^\-[1-9][]0-9“*$ 或 ^-[1-9]\d*$

13。 非負整數:^\d+$ 或 ^[1-9]\d*|0$

14。 非正整數:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

15。 非負浮點數:^\d+(\。\d+)?$ 或 ^[1-9]\d*\。\d*|0\。\d*[1-9]\d*|0?\。0+|0$

16。 非正浮點數:^((-\d+(\。\d+)?)|(0+(\。0+)?))$ 或 ^(-([1-9]\d*\。\d*|0\。\d*[1-9]\d*))|0?\。0+|0$

17。 正浮點數:^[1-9]\d*\。\d*|0\。\d*[1-9]\d*$ 或 ^(([0-9]+\。[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\。[0-9]+)|([0-9]*[1-9][0-9]*))$

18。 負浮點數:^-([1-9]\d*\。\d*|0\。\d*[1-9]\d*)$ 或 ^(-(([0-9]+\。[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\。[0-9]+)|([0-9]*[1-9][0-9]*)))$

19。 浮點數:^(-?\d+)(\。\d+)?$ 或 ^-?([1-9]\d*\。\d*|0\。\d*[1-9]\d*|0?\。0+|0)$

二、校驗字元的表示式

1。 漢字:^[\u4e00-\u9fa5]{0,}$

2。 英文和數字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

3。 長度為3-20的所有字元:^。{3,20}$

4。 由26個英文字母組成的字串:^[A-Za-z]+$

5。 由26個大寫英文字母組成的字串:^[A-Z]+$

6。 由26個小寫英文字母組成的字串:^[a-z]+$

7。 由數字和26個英文字母組成的字串:^[A-Za-z0-9]+$

8。 由數字、26個英文字母或者下劃線組成的字串:^\w+$ 或 ^\w{3,20}$

9。 中文、英文、數字包括下劃線:^[\u4E00-\u9FA5A-Za-z0-9_]+$

10。 中文、英文、數字但不包括下劃線等符號:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

11。 可以輸入含有^%&‘,;=?$\”等字元:[^%&’,;=?$\x22]+ 12 禁止輸入含有~的字元:[^~\x22]+

其它:

。*匹配除 \n 以外的任何字元。

/[\u4E00-\u9FA5]/ 漢字

/[\uFF00-\uFFFF]/ 全形符號

/[\u0000-\u00FF]/ 半形符號

三、特殊需求表示式

1。 Email地址:^\w+([-+。]\w+)*@\w+([-。]\w+)*\。\w+([-。]\w+)*$

2。 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/。[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/。?

3。 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\。)+[\w-]+(/[\w-。/?%&=]*)?$

4。 手機號碼:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

5。 電話號碼(“XXX-XXXXXXX”、“XXXX-XXXXXXXX”、“XXX-XXXXXXX”、“XXX-XXXXXXXX”、“XXXXXXX”和“XXXXXXXX):^(\(\d{3,4}-)|\d{3。4}-)?\d{7,8}$

6。 國內電話號碼(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}

7。 身份證號(15位、18位數字):^\d{15}|\d{18}$

8。 短身份證號碼(數字、字母x結尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

9。 帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

10。 密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):^[a-zA-Z]\w{5,17}$

11。 強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間):^(?=。*\d)(?=。*[a-z])(?=。*[A-Z])。{8,10}$

12。 日期格式:^\d{4}-\d{1,2}-\d{1,2}

13。 一年的12個月(01~09和1~12):^(0?[1-9]|1[0-2])$

14。 一個月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

15。 錢的輸入格式:

16。 1。有四種錢的表示形式我們可以接受:”10000。00“ 和 ”10,000。00“, 和沒有 ”分“ 的 ”10000“ 和 ”10,000“:^[1-9][0-9]*$

17。 2。這表示任意一個不以0開頭的數字,但是,這也意味著一個字元”0“不透過,所以我們採用下面的形式:^(0|[1-9][0-9]*)$

18。 3。一個0或者一個不以0開頭的數字。我們還可以允許開頭有一個負號:^(0|-?[1-9][0-9]*)$

19。 4。這表示一個0或者一個可能為負的開頭不為0的數字。讓使用者以0開頭好了。把負號的也去掉,因為錢總不能是負的吧。下面我們要加的是說明可能的小數部分:^[0-9]+(。[0-9]+)?$

20。 5。必須說明的是,小數點後面至少應該有1位數,所以”10。“是不透過的,但是 ”10“ 和 ”10。2“ 是透過的:^[0-9]+(。[0-9]{2})?$

21。 6。這樣我們規定小數點後面必須有兩位,如果你認為太苛刻了,可以這樣:^[0-9]+(。[0-9]{1,2})?$

22。 7。這樣就允許使用者只寫一位小數。下面我們該考慮數字中的逗號了,我們可以這樣:^[0-9]{1,3}(,[0-9]{3})*(。[0-9]{1,2})?$

23 8。1到3個數字,後面跟著任意個 逗號+3個數字,逗號成為可選,而不是必須:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(。[0-9]{1,2})?$

24。 備註:這就是最終結果了,別忘了”+“可以用”*“替代如果你覺得空字串也可以接受的話(奇怪,為什麼?)最後,別忘了在用函式時去掉去掉那個反斜槓,一般的錯誤都在這裡

25。 xml檔案:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\。[x|X][m|M][l|L]$

26。 中文字元的正則表示式:[\u4e00-\u9fa5]

27。 雙位元組字元:[^\x00-\xff] (包括漢字在內,可以用來計算字串的長度(一個雙位元組字元長度計2,ASCII字元計1))

28。 空白行的正則表示式:\n\s*\r (可以用來刪除空白行)

29。 HTML標記的正則表示式:<(\S*?)[^>]*>。*?|<。*? /> (網上流傳的版本太糟糕,上面這個也僅僅能部分,對於複雜的巢狀標記依舊無能為力)

30。 首尾空白字元的正則表示式:^\s*|\s*$或(^\s*)|(\s*$) (可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表示式)

31。 騰訊QQ號:[1-9][0-9]{4,} (騰訊QQ號從10000開始)

32。 中國郵政編碼:[1-9]\d{5}(?!\d) (中國郵政編碼為6位數字)

33。 IP地址:\d+\。\d+\。\d+\。\d+ (提取IP地址時有用)

34。 IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\。){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))

35。 IP-v4地址:\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\。){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b (提取IP地址時有用)

36。 校驗IP-v6地址:(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\。){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\。){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))

37。 子網掩碼:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\。){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))

38。 校驗日期:^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$(“yyyy-mm-dd“ 格式的日期校驗,已考慮平閏年。)

39。 抽取註釋:<!——(。*?)——>

40。 查詢CSS屬性:^\\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s。#]+[;]{1}

41。 提取頁面超連結:(]*)(href=”https?:\\/\\/)((?!(?:(?:www\\。)?‘。implode(’|(?:www\\。)?‘, $follow_list)。’))[^“ rel=”external nofollow“ ]+)”((?!。*\\brel=)[^>]*)(?:[^>]*)>

42。 提取網頁圖片:\\< *[img][^\\\\>]*[src] *= *[\\“\\‘]{0,1}([^\\”\\’\\ >]*)

43。 提取網頁顏色程式碼:^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

44。 副檔名效驗:^([a-zA-Z]\\:|\\\\)\\\\([^\\\\]+\\\\)*[^\\/:*?“<>|]+\\。txt(l)?$

45。 判斷IE版本:^。*MSIE [5-8](?:\\。[0-9]+)?(?!。*Trident\\/[5-9]\\。0)。*$

元字元

描述

\

將下一個字元標記符、或一個向後引用、或一個八進位制轉義符。例如,“\\n”匹配\n。“\n”匹配換行符。序列“\\”匹配“\”而“\(”則匹配“(”。即相當於多種程式語言中都有的“跳脫字元”的概念。

^

匹配輸入字行首。如果設定了RegExp物件的Multiline屬性,^也匹配“\n”或“\r”之後的位置。

$

匹配輸入行尾。如果設定了RegExp物件的Multiline屬性,$也匹配“\n”或“\r”之前的位置。

*

匹配前面的子表示式任意次。例如,zo*能匹配“z”,也能匹配“zo”以及“zoo”。*等價於{0,}。

+

匹配前面的子表示式一次或多次(大於等於1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等價於{1,}。

匹配前面的子表示式零次或一次。例如,“do(es)?”可以匹配“do”或“does”。?等價於{0,1}。

{n}

n是一個非負整數。匹配確定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的兩個o。

{n,}

n是一個非負整數。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等價於“o+”。“o{0,}”則等價於“o*”。

{n,m}

m和n均為非負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”將匹配“fooooood”中的前三個o為一組,後三個o為一組。“o{0,1}”等價於“o?”。請注意在逗號和兩個數之間不能有空格。

當該字元緊跟在任何一個其他限制符(*,+,?,{n},{n,},{n,m})後面時,匹配模式是非貪婪的。非貪婪模式儘可能少地匹配所搜尋的字串,而預設的貪婪模式則儘可能多地匹配所搜尋的字串。例如,對於字串“oooo”,“o+”將盡可能多地匹配“o”,得到結果[“oooo”],而“o+?”將盡可能少地匹配“o”,得到結果 [‘o’, ‘o’, ‘o’, ‘o’]

。點

匹配除“\n”和”\r“之外的任何單個字元。要匹配包括“\n”和”\r“在內的任何字元,請使用像“[\s\S]”的模式。

(pattern)

匹配pattern並獲取這一匹配。所獲取的匹配可以從產生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中則使用$0…$9屬性。要匹配圓括號字元,請使用“”或“”或“”。

(?:pattern)

非獲取匹配,匹配pattern但不獲取匹配結果,不進行儲存供以後使用。這在使用或字元“(|)”來組合一個模式的各個部分時很有用。例如“industr(?:y|ies)”就是一個比“industry|industries”更簡略的表示式。

(?=pattern)

非獲取匹配,正向肯定預查,在任何匹配pattern的字串開始處匹配查詢字串,該匹配不需要獲取供以後使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3。1”中的“Windows”。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜尋,而不是從包含預查的字元之後開始。

(?!pattern)

非獲取匹配,正向否定預查,在任何不匹配pattern的字串開始處匹配查詢字串,該匹配不需要獲取供以後使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3。1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。

(?<=pattern)

非獲取匹配,反向肯定預查,與正向肯定預查類似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3。1Windows”中的“Windows”。

*python的正則表示式沒有完全按照正則表示式規範實現,所以一些高階特性建議使用其他語言如java、scala等

(?<!patte_n)

非獲取匹配,反向否定預查,與正向否定預查類似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3。1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。

*python的正則表示式沒有完全按照正則表示式規範實現,所以一些高階特性建議使用其他語言如java、scala等

x|y

匹配x或y。例如,“z|food”能匹配“z”或“food”(此處請謹慎)。“[z|f]ood”則匹配“zood”或“food”。

[xyz]

字元集合。匹配所包含的任意一個字元。例如,“[abc]”可以匹配“plain”中的“a”。

[^xyz]

負值字元集合。匹配未包含的任意字元。例如,“[^abc]”可以匹配“plain”中的“plin”任一字元。

[a-z]

字元範圍。匹配指定範圍內的任意字元。例如,“[a-z]”可以匹配“a”到“z”範圍內的任意小寫字母字元。

注意:只有連字元在字元組內部時,並且出現在兩個字元之間時,才能表示字元的範圍; 如果出字元組的開頭,則只能表示連字元本身。

[^a-z]

負值字元範圍。匹配任何不在指定範圍內的任意字元。例如,“[^a-z]”可以匹配任何不在“a”到“z”範圍內的任意字元。

\b

匹配一個單詞的邊界,也就是指單詞和空格間的位置(即正則表示式的“匹配”有兩種概念,一種是匹配字元,一種是匹配位置,這裡的\b就是匹配位置的)。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”;“\b1_”可以匹配“1_23”中的“1_”,但不能匹配“21_3”中的“1_”。

\B

匹配非單詞邊界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。

\cx

匹配由x指明的控制字元。例如,\cM匹配一個Control-M或回車符。x的值必須為A-Z或a-z之一。否則,將c視為一個原義的“c”字元。

\d

匹配一個數字字元。等價於[0-9]。grep 要加上-P,perl正則支援

\D

匹配一個非數字字元。等價於[^0-9]。grep要加上-P,perl正則支援

\f

匹配一個換頁符。等價於\x0c和\cL。

\n

匹配一個換行符。等價於\x0a和\cJ。

\r

匹配一個回車符。等價於\x0d和\cM。

\s

匹配任何不可見字元,包括空格、製表符、換頁符等等。等價於[ \f\n\r\t\v]。

\S

匹配任何可見字元。等價於[^ \f\n\r\t\v]。

\t

匹配一個製表符。等價於\x09和\cI。

\v

匹配一個垂直製表符。等價於\x0b和\cK。

\w

匹配包括下劃線的任何單詞字元。類似但不等價於“[A-Za-z0-9_]”,這裡的”單詞“字元使用Unicode字符集。

\W

匹配任何非單詞字元。等價於“[^A-Za-z0-9_]”。

\xn

匹配n,其中n為十六進位制轉義值。十六進位制轉義值必須為確定的兩個數字長。例如,“\x41”匹配“A”。“\x041”則等價於“\x04&1”。正則表示式中可以使用ASCII編碼。

\num

匹配num,其中num是一個正整數。對所獲取的匹配的引用。例如,“(。)\1”匹配兩個連續的相同字元。

\n

標識一個八進位制轉義值或一個向後引用。如果\n之前至少n個獲取的子表示式,則n為向後引用。否則,如果n為八進位制數字(0-7),則n為一個八進位制轉義值。

\nm

標識一個八進位制轉義值或一個向後引用。如果\nm之前至少有nm個獲得子表示式,則nm為向後引用。如果\nm之前至少有n個獲取,則n為一個後跟文字m的向後引用。如果前面的條件都不滿足,若n和m均為八進位制數字(0-7),則\nm將匹配八進位制轉義值nm。

\nml

如果n為八進位制數字(0-7),且m和l均為八進位制數字(0-7),則匹配八進位制轉義值nml。

\un

匹配n,其中n是一個用四個十六進位制數字表示的Unicode字元。例如,\u00A9匹配版權符號(©)。

\p{P}

小寫 p 是 property 的意思,表示 Unicode 屬性,用於 Unicode 正表示式的字首。中括號內的“P”表示Unicode 字符集七個字元屬性之一:標點字元。

其他六個屬性:

L:字母;

M:標記符號(一般不會單獨出現);

Z:分隔符(比如空格、換行等);

S:符號(比如數學符號、貨幣符號等);

N:數字(比如阿拉伯數字、羅馬數字等);

C:其他字元。

*注:此語法部分語言不支援,例:javascript。

\<

\>

匹配詞(word)的開始(\<)和結束(\>)。例如正則表示式\能夠匹配字串”for the wise“中的”the“,但是不能匹配字串”otherwise“中的”the“。注意:這個元字元不是所有的軟體都支援的。

( )

將( 和 ) 之間的表示式定義為“組”(group),並且將匹配這個表示式的字元儲存到一個臨時區域(一個正則表示式中最多可以儲存9個),它們可以用 \1 到\9 的符號來引用。

|

將兩個匹配條件進行邏輯“或”(or)運算。例如正則表示式(him|her) 匹配”it belongs to him“和”it belongs to her“,但是不能匹配”it belongs to them。“。注意:這個元字元不是所有的軟體都支援的。

阿里大佬整理的常用正則表示式大全

阿里大佬整理的常用正則表示式大全

阿里大佬整理的常用正則表示式大全

阿里大佬整理的常用正則表示式大全

作者 | ZhaoYingChao88