更新日期:2019-12-24
注意更新日期柑肴,開發(fā)者要注意以后號碼段更新
- 更新日志:
- 時間:2019-12-24
- 工信部核發(fā)190问麸、192、196骑篙、197號段
- 中國廣電第一次有了自己的號碼段
- 時間:2019-12-24
開發(fā)項目時鸟蟹,總是要用到一些正則驗證乌妙,就數(shù)手機號碼規(guī)則比較難收集,現(xiàn)總結(jié)如下:
規(guī)則
- 【數(shù)據(jù)卡】:14號段以前為上網(wǎng)卡專屬號段建钥,如中國聯(lián)通的是145藤韵,中國移動的是147,中國電信的是149等等。
-
【虛擬運營商】:
電信:170[1700/1701/1702]锦针、162
移動:1703/1705/1706荠察、165
聯(lián)通:1704/1707/1708/1709置蜀、171奈搜、167 - 【衛(wèi)星通信】:
電信:1740[0-5]
移動:1349
工業(yè)和信息化部應(yīng)急通信保障中心 :1740[6-9]悉盆,1741[0-2] - 【物聯(lián)網(wǎng)網(wǎng)號】:
電信:10649、1410[0,9]馋吗、149
移動:10648焕盟、1440[0,9]、148宏粤、172
聯(lián)通:10646脚翘、140、146 - 手機號碼: 13[0-9], 14[5,6,7,8,9], 15[0-3, 5-9], 16[2,5,6,7], 17[0-8], 18[0-9], 19[0-3, 5-9]
電信號段: 133,149,153,162(虛),170[0,1,2](虛),173,174[0-5](衛(wèi)),177,180,181,189,19[0,1,3,9]
移動號段: 13[4-9],147,148,15[0-2,7-9],165(虛),170[3,5,6](虛),172,178,18[2-4,7-8],19[5,7,8]
聯(lián)通號段: 130,131,132,145,146,155,156,166,167(虛),170[4,7,8,9](虛),171(虛),175,176,185,186,196
廣電號段: 192
實現(xiàn)
我是iOS開發(fā)者绍哎,所以就用Objective-c語言實現(xiàn)了,其它的語言自行轉(zhuǎn)換
簡單格式驗證
如果只是需要驗證手機號碼的格式来农,可以簡單寫成這樣:
/**
* 手機號碼格式驗證
*/
+(BOOL)isMobile:(NSString *)phoneNum {
NSString *MOBILE = @"^(13[0-9]|14[5-9]|15[0-3,5-9]|16[2,5,6,7]|17[0-8]|18[0-9]|19[0-3,5-9])\\d{8}$";
NSPredicate *pred_mobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
return [pred_mobile evaluateWithObject:phoneNum];
}
嚴格驗證
/**
* 手機號碼格式驗證
*/
+(BOOL)isTelphoneNumber:(NSString *)telNum{
telNum = [telNum stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if ([telNum length] != 11) {
return NO;
}
/**
* 中國移動:China Mobile
*13[4-9],147,148,15[0-2,7-9],165,170[3,5,6],172,178,18[2-4,7-8],19[5,7,8]
*/
NSString *CM_NUM = @"^((13[4-9])|(14[7-8])|(15[0-2,7-9])|(165)|(178)|(18[2-4,7-8])|(19[5,7,8]))\\d{8}|(170[3,5,6])\\d{7}$";
/**
* 中國聯(lián)通:China Unicom
* 130,131,132,145,146,155,156,166,167,170[4,7,8,9],171,175,176,185,186,196
*/
NSString *CU_NUM = @"^((13[0-2])|(14[5,6])|(15[5-6])|(16[6-7])|(17[1,5,6])|(18[5,6])|(196))\\d{8}|(170[4,7-9])\\d{7}$";
/**
* 中國電信:China Telecom
* 133,149,153,162,170[0,1,2],173,174[0-5],177,180,181,189,19[0,1,3,9]
*/
NSString *CT_NUM = @"^((133)|(149)|(153)|(162)|(17[3,7])|(18[0,1,9])|(19[0,1,3,9]))\\d{8}|((170[0-2])|(174[0-5]))\\d{7}$";
/**
* 中國廣電:China Broadcasting Network
* 192
*/
NSString *CBN_NUM = @"^((192))\\d{8}$";
NSPredicate *pred_CM = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CM_NUM];
NSPredicate *pred_CU = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CU_NUM];
NSPredicate *pred_CT = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CT_NUM];
NSPredicate *pred_CBN = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CBN_NUM];
BOOL isMatch_CM = [pred_CM evaluateWithObject:telNum];
BOOL isMatch_CU = [pred_CU evaluateWithObject:telNum];
BOOL isMatch_CT = [pred_CT evaluateWithObject:telNum];
BOOL isMatch_CBN = [pred_CBN evaluateWithObject:telNum];
if (isMatch_CM || isMatch_CT || isMatch_CU || isMatch_CBN) {
return YES;
}
return NO;
}
當然,上面的正則方法分拆開來崇堰,就可以單獨驗證號段的歸屬了沃于!
PS:攜號轉(zhuǎn)網(wǎng)這種特殊情況,咱們就先不考慮了海诲,考慮了也沒用繁莹!
更新日期:2019-12-24