標籤:Regex 電話號碼 手機號碼 區號
在應用中驗證電話號碼是一個常見的功能,而電話號碼包括手機號碼和有線電話號碼。今天寫這個Regex寫了比較久,記錄在這裡,以備後用。本文的一個基本假設:手機號碼都是11位,有線電話號碼加上區號也是11位。
先科普一下有線電話區號的規則:點擊科普。這是網易部落格的一篇博文,簡單說來有線電話區號是曆史的產物,我也是看了這裡才知道個大概。總結起來我認為可以歸納為這樣:北京區號010,後面8位元;其他地區以以0為首位,2~9位次位,其餘位為0~9。因此總結起來正則式應該是這樣:
(010\d{8})|(0[2-9]\d{9})
而手機號則不一樣了,手機號的號段不固定,目前能查閱到的電訊廠商號段見:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/53/47/wKioL1RlubHyBnMYAADFoECuQHo018.jpg" title="QQ20141114161110.jpg" alt="wKioL1RlubHyBnMYAADFoECuQHo018.jpg" />
觀察可以發現13*系列號段是齊全的,而14開頭的只有145、147兩個號段,15和18號段除了缺失154、184之外也是齊全的。因此Regex列出如下:
(13\d{9})|(14[57]\d{8})|(15[0-35-9]\d{8})|(18[0-35-9]\d{8})
兩者串連起來可以驗證手機和有線電話號碼,如下:
(010\d{8})|(0[2-9]\d{9})|(13\d{9})|(14[57]\d{8})|(15[0-35-9]\d{8})|(18[0-35-9]\d{8})
上述式子經過線上測試載入器初步測試通過,
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/53/4A/wKiom1RlvgHhWfqxAADCzjD2j1k324.jpg" title="QQ20141114161453.jpg" alt="wKiom1RlvgHhWfqxAADCzjD2j1k324.jpg" />
這個運算式寫得有些長,如果有更簡潔的寫法還請各位不吝賜教,謝謝!
本文出自 “飛翔的貓咪” 部落格,請務必保留此出處http://flyingcat2013.blog.51cto.com/7061638/1576568
驗證手機和有線電話號碼的Regex