1. 程式人生 > >正則表示式的使用——匹配手機號碼、IP地址例項講解

正則表示式的使用——匹配手機號碼、IP地址例項講解

一、使用場景

典型的搜尋和替換操作要求您提供與預期的搜尋結果匹配的確切文字。雖然這種技術對於對靜態文字執行簡單搜尋和替換任務可能已經足夠了,但它缺乏靈活性,若採用這種方法搜尋動態文字,即使不是不可能,至少也會變得很困難。

通過使用正則表示式,可以:

  • 測試字串內的模式。
    例如,可以測試輸入字串,以檢視字串內是否出現電話號碼模式或信用卡號碼模式。這稱為資料驗證。
  • 替換文字。
    可以使用正則表示式來識別文件中的特定文字,完全刪除該文字或者用其他文字替換它。
  • 基於模式匹配從字串中提取子字串。
    可以查詢文件內或輸入域內特定的文字。

例如,您可能需要搜尋整個網站,刪除過時的材料,以及替換某些 HTML 格式標記。在這種情況下,可以使用正則表示式來確定在每個檔案中是否出現該材料或該 HTML 格式標記。此過程將受影響的檔案列表縮小到包含需要刪除或更改的材料的那些檔案。然後可以使用正則表示式來刪除過時的材料。最後,可以使用正則表示式來搜尋和替換標記。

二、語法

① 非列印字元

② 特殊字元

注:如需要匹配這些特殊字元,需進行轉義”,即在字元前面加個反斜槓字元’ \’

③ 限定符

④ 定位符

注:定位符不能與限定符一起使用。

三、例項

① 匹配手機號碼

現有手機號碼段

移動號段: 134、135、136、137、138、139、147、148、150、151、152、157、158、159、172、178、182、183、184、187、188、198

聯通號段:130、131、132、145、146、155、156、166、171、175、176、185、186

電訊號段:133、149、153、173、174、177、180、181、189、199

虛擬運營商號段:170

整理上面的手機號碼段分析可得:

13開頭的第三位數字包含0-9,匹配"13[0-9]"

14開頭的第三位數字包含5-9,匹配"14[5-9]"

15開頭的第三位數字不包含4的其他9個數字,匹配"15[0-35-9]"

16開頭的第三位數字只有6

17開頭的第三位數字包含0-8,匹配"17[0-8]"

18開頭的第三位數字包含0-9,匹配"18[0-9]"

19開頭的第三位數字包含8、9,匹配"19[89]"

其他數字就簡單了,只有八位數字,包含0-9,匹配" [0-9]{8}$"或"\d{8}$"

因此,手機號碼的正則表示式匹配字串如下所示:

匹配手機號碼段正則表示式:

"^(13[0-9]|14[5-9]|15[0-35-9]|166|17[0-8]|18[0-9]|19[89])[0-9]{8}$"

"^(13[0-9]|14[5-9]|15[0-35-9]|166|17[0-8]|18[0-9]|19[89])\d{8}$"

② 匹配IP地址

IP地址的格式:[0,255].[0,255].[0,255].[0,255]

這裡四段的數字都是0-255之間,這個區間可分為五種情況,如下:

一位數時,可為09,即[0,9],匹配”\d””[0-9]”

兩位數時,十位數為19,個位數為09,即[10,99] ,匹配”[1-9]\d”

三位數且百位數為1時,十位數與個位數可為09,即[100,199] ,匹配”1\d\d”

三位數且百位數為2時,十位數為04,個位數為0-9,即[200,249] ,匹配”2[0-4]\d”

三位數且百位數為2時,十位數為5,個位數為0-5,即[250,255] ,匹配”25[0-5]”

因此,IP地址的正則表示式匹配字串如下所示:

^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$

相關推薦

表示式的使用——匹配手機號碼IP地址例項講解

一、使用場景 典型的搜尋和替換操作要求您提供與預期的搜尋結果匹配的確切文字。雖然這種技術對於對靜態文字執行簡單搜尋和替換任務可能已經足夠了,但它缺乏靈活性,若採用這種方法搜尋動態文字,即使不是不可能,至少也會變得很困難。 通過使用正則表示式,可以: 測試字串內的模式。

php表示式驗證手機號碼

php正則表示式驗證手機號碼是否合法:         $phone = 13688888888;         $check = '/^(1(([35789][0-9])|(47)))\

PHP利用表示式實現手機號碼中間4位用星號替換顯示

因為需要為客戶保持隱私,所以手機號碼不能完全顯示在網站上,但是又不能不顯示,所以就很多網站想到了顯示但是不完整顯示,在上面用星號替換部分顯示,其實做到這個很簡單,用正則替換顯示其中的一部分即可。 PHP利用正則表示式實現手機號碼中間4位用星號替換顯示功能,請看以下原始碼: Metho

表示式--驗證手機號碼

function isPhoneNo(phone){ var pattern = /^1[3|5|6|7|8|9]{1}[0-9]{9}$/; return pattern.test(phone); }

郵箱和手機號碼表示式驗證(手機號碼支援188)-HTML-XHTML-CSS

var Email=document.getElementById("inputEmail"); var reEmail=/^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$/;   //郵箱檢測 var b_email=reEmail

Android表示式判斷手機號碼的格式

 判斷手機號碼是否正確的方法: public static boolean isPhone(String inputText) { Pattern p = Pattern.compile("

js表示式驗證手機號碼和郵箱

原生的js 1、目前的手機號碼段如下: 檢視最新號碼段 移動: 139 138 137 136 135 134 147 150 151 152 157 158 159 178 182 183 184 187 188 聯通: 130 131 132 155

Java表示式——驗證手機號碼符合性

regex1驗證條件很方便,可以大範圍覆蓋, 但是還是細分一下使用regex2驗證條件比較好一些。 /** * 驗證手機號碼的合法性 * @author jy */ package mobile; import java.util.regex.Matcher; i

C# 中使用表示式驗證電話號碼手機號身份證號

驗證電話號碼的主要程式碼如下: public bool IsTelephone(stringstr_telephone) { returnSystem.Text.RegularExpressions.Regex.IsMatch(str_telephone,@

JS表示式 最新手機號碼表示式

//校驗是否全由數字組成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校驗登入名:只能輸入5-20個以字母開頭、可帶數字、“_”、“.”的字串 functio

C#中使用表示式驗證電話號碼手機號身份證號(轉)

驗證電話號碼的主要程式碼如下:    public bool IsTelephone(stringstr_telephone)    {    returnSystem.Text.RegularExpressions.Regex.IsMatch(str_telephone,@"^(\d{3,4}-)?\d

在QTavleView中新增QLineEdit(用表示式校驗輸入的IP地址)

在QTableView中新增QLineEdit,並且該QLineEdit是需要填入IP地址,因此輸入的資料必須遵循IP地址的規則。這時可以使用QT中的委託。 委託的一篇文章http://blog.csdn.net/hello_world_lvlcoder/article

表示式——匹配中國大陸手機號碼

一、匹配所有號碼(手機卡 + 資料卡 + 上網絡卡) ^(?:\+?86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7[^29\D](?(?<=4)(?:0\d|1[0-2]|9\d)|\d{2})|9[189]\d{2}|6[567]\d{2}|4(?:[14]0\d{3

IP 地址表示式匹配

有關正則方面的知識,會在詳細的講解中提到。   在講解之前,我先給大家介紹一下,ip地址的生成規則。   IP地址,是由32位數字二進位制轉為四個十進位制的字串組成。   怎麼轉化?下面講解:       二進位制:11111111111111111111111111

pycharm用表示式匹配IP地址

“10.0.0.1|10.0.0.2|13.0.0.256|14.0.0.2|16.0.0.2|19.0.0.2|16.0.0.2|10.0.0.2|” #幫我匹配出 以10.0開頭的ip #匹配出符合要求的字串 #10.0. 以 10.0. 開頭的字串, 後面

如何在shell指令碼中通過表示式匹配IP地址

在運維場景下,我們經常需要在伺服器上用正則表示式來匹配IP地址。 shell和其它程式語言一樣,也可以使用正則分組捕獲,不過不能使用 $1或\1這樣的形式來捕獲分組,可以通過陣列${BASH_REMATCH}來獲得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]} 下面以

史上最全PHP表示式,如:郵箱身份證手機號IP

下面我用PHP語言來分別寫出各種正則表示式 下方程式碼直接複製即可 匹配郵箱 $str = ''; $isMatched = preg_match_all('/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/', $str

URL網址,電話號碼,電子郵件地址及所有連結地址表示式匹配

               URL網址,電話號碼,電子郵件地址及所有連結地址的正則表示式匹配   文章開始把我喜歡的這句話送個大家:這個世界上還有什麼比自己寫的程式碼執行在一億人的電腦上更酷的事情嗎,

表示式-匹配中英文字母和數字

在做專案的過程中,使用正則表示式來匹配一段文字中的特定種類字元,是比較常用的一種方式,下面是對常用的正則匹配做了一個歸納整理。匹配中文:[\u4e00-\u9fa5]英文字母:[a-zA-Z]數字:[0-9]匹配中文,英文字母和數字及_:^[\u4e00-\u9fa5_a-zA-Z0-9]+$同時判斷輸入長度

Android 表示式判斷手機電話號碼是否合法

1、手機號開頭集合166,176,177,178180,181,182,183,184,185,186,187,188,189  145,147   130,131,132,133,134,135,13