1. 程式人生 > >Regex 手機號 座機 正則表示式

Regex 手機號 座機 正則表示式

最近在工作中需要判斷一個號碼是否是手機號,是否是座機號。

在網上也搜到了大家總結的方法,沒有直接使用這些方法是因為:手機號碼在不斷開始新的號碼段(比如17x),座機號中個別區號由於行政區域的變化而廢除。

這裡的手機和座機的正則表示式基於本文作者目前找到的最新的手機號碼段,區號(截止到2015年8月)。

座機號碼:http://baike.baidu.com/view/103379.htm.

new Regex(@"^0?(10|(2|3[1,5,7]|4[1,5,7]|5[1,3,5,7]|7[1,3,5,7,9]|8[1,3,7,9])[0-9]|91[0-7,9]|(43|59|85)[1-9]|39[1-8]|54[3,6]|(701|580|349|335)|54[3,6]|69[1-2]|44[0,8]|48[2,3]|46[4,7,8,9]|52[0,3,7]|42[1,7,9]|56[1-6]|63[1-5]|66[0-3,8]|72[2,4,8]|74[3-6]|76[0,2,3,5,6,8,9]|82[5-7]|88[1,3,6-8]|90[1-3,6,8,9])\d{7,8}$");

手機號碼:http://baike.baidu.com/view/58286.htm
new Regex(@"^0?(13\d|14[5,7]|15[0-3,5-9]|17[0,6-8]|18\d)\d{8}$");

請注意,本正則表示式:

支援以下格式手機號:013622335533,13622335533;座機號:01087654321,1087654321

不支援以下格式手機號:17951139012345678;座機: 010-88554433;(010)85443322;+86 10 32454433;

但是, 以上所列正則表示式只需要稍作修改即可支援以上所列格式,請開動腦筋自己解決吧:)。