Linux系統程式設計(18)——正規表示式實用舉例

尹成發表於2014-07-26

 

匹配特定字串:

只能輸入長度為3的字元:"^.{3}$"。

只能輸入由26個英文字母組成的字串:"^[A-Za-z]+$"。

只能輸入由26個大寫英文字母組成的字串:"^[A-Z]+$"。

只能輸入由26個小寫英文字母組成的字串:"^[a-z]+$"。

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

只能輸入由數字、26個英文字母或者下劃線組成的字串:"^\w+$"。

 

 

正規表示式匹配身份證號碼

身份證為15位或者18位,15位的全為數字,18位的前17位為數字,最後一位為數字或者大寫字母”X“。

與之匹配的正規表示式:(^\d{15}$)|(^\d{17}([0-9]|X)$)

 

 

正規表示式匹配電子郵箱或者電子郵件地址

正則匹配表示式:/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?$/i

 

國際域名格式如下:域名由各國文字的特定字符集、英文字母、數字及“-”(即連字元或減號)任意組合而成, 但開頭及結尾均不能含有“-”,“-”不能連續出現。 域名中字母不分大小寫。域名最長可達60個位元組(包括字尾.com、.net、.org等)。

 

說明:

①/內容/i 構成一個不區分大小寫的正規表示式;^ 匹配開始;$ 匹配結束。

②[a-z] E-Mail字首必需是一個英文字母開頭

③([a-z0-9]*[-_]?[a-z0-9]+)* 和_a_2、aaa11、_1_a_2匹配,和a1_、aaff_33a_、a__aa不匹配,如果是空字元,也是匹配的,*表示0個或者多個。

④*表示0個或多個前面的字元.

⑤[a-z0-9]* 匹配0個或多個英文字母或者數字;[-_]? 匹配0個或1“-”,因為“-”不能連續出現。

⑥[a-z0-9]+ 匹配1個或多個英文字母或者數字,因為“-”不能做為結尾

⑦@ 必需有個有@

⑧([a-z0-9]*[-_]?[a-z0-9]+)+ 見上面([a-z0-9]*[-_]?[a-z0-9]+)*解釋,但是不能為空,+表示一個或者為多個。

⑨[\.] 將特殊字元(.)當成普通字元;[a-z]{2,3} 匹配2個至3個英文字母,一般為com或者net等。

⑩([\.][a-z]{2})? 匹配0個或者1個[\.][a-z]{2}(比如.cn等) 我不知道一般.com.cn最後部份是不是都是兩位的,如果不是請修改{2}為{起始字數,結束字數}

 

正規表示式匹配電話號碼和手機號碼

正規表示式     \d{3}-\d{8}|\d{4}-\d{7}

匹配         0511-4405222 |021-87888822

不匹配     02-552255 12345-784787

 

正規表示式     (^\([0]\d{2}|\d{4}\))(\d{6,7}$)

匹配         (021)1234567 |(0411)123456 | (000)000000

不匹配     (123)1234567 | 025123456 |0252345678

 

正規表示式匹配使用者密碼

密碼形式可以根據開發需求自己設定,下面是匹配密碼的例子:

 

正規表示式     ^[a-zA-Z]\w{5,17}$

匹配         以字母開頭,長度在6~18之間,只能包含字元、數字和下劃線

 

正規表示式匹配日期時間

正規表示式     ^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$

匹配         12:15 | 10:26:59 |22:01:15

不匹配     24:10:25 | 13:2:60

 

正規表示式     ^([0]?[1-9]|[1|2][0-9]|[3][0|1])[./-]([0]?[1-9]|[1][0-2])[./-]([0-9]{4}|[0-9]{2})$

匹配         10/03/1979 | 1-1-02 |01.1.2003

不匹配     10/03/197 | 09--02--2004 |01 02 03

 

正規表示式 ^([2-9]\d{3}((0[1-9]|1[012])(0[1-9]|1\d|2[0-8])|(0[13456789]|1[012])(29|30)|(0[13578]|1[02])31)|(([2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00))0229)$

匹配         20000101 | 20051231 |20040229

不匹配     19990101 | 20053112 |20050229

 

正規表示式     ^([1-9]|1[0-2]|0[1-9]){1}(:[0-5][0-9][aApP][mM]){1}$

匹配         08:00AM | 10:00am |7:00pm

不匹配     13:00pm | 12:65am

 

正規表示式匹配IP地址

正規表示式 ^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$

匹配         127.0.0.1 |255.255.255.0 | 192.168.0.1

不匹配     1200.5.4.3 | abc.def.ghi.jkl| 255.foo.bar.1

 

正規表示式      ^((0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})\.){3}(0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})(?(\/)\/([0-9]|[1-2][0-9]|3[0-2])|)$

匹配         192.168.0.1 |192.168.0.1/32 | 255.255.0.0/1

不匹配     010.0.0.0 | 192.168.0.1/33| 256.0.1.55

 

正規表示式     ^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})){3}$

匹配         97.67.44.20 |199.154.37.214 | 127.0.0.1

不匹配     63.125.94.287 |140.370.a.187 | 94.923.1

 

正規表示式     /^(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])\/(\d{1}|[0-2]{1}\d{1}|3[0-2])$/

匹配         192.168.100.1/24 |0.0.0.0/0

不匹配     192.168.100.1/33 |0.0.0.0/90

 

正規表示式匹配漢字或中文

 

正則匹配中文漢字根據頁面編碼不同而略有區別:

GBK/GB2312編碼:[x80-xff>]+ 或 [xa1-xff]+

UTF-8編碼:[x{4e00}-x{9fa5}]+/u

 

相關文章