請先查看正則相關(guān):
http://www.reibang.com/p/91f4d9f8c8f3
正則驗證手機(jī)號的有效性:
NSString *mobileRegex = @"^(0|86|17951)?(13[0-9]|15[012356789]|17[0678]|18[0-9]|14[57])[0-9]{8}$";
NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",mobileRegex];
[pre evaluateWithObject:@"你輸入的手機(jī)號碼"];//此處返回的是BOOL類型,YES or NO;
區(qū)分運營商號段的手機(jī)號有效性判斷
#pragma mark - 判斷是否為電話號碼
- (BOOL)isPhoneNumber
{
/**
* 移動號段正則表達(dá)式
*/
NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
/**
* 聯(lián)通號段正則表達(dá)式
*/
NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
/**
* 電信號段正則表達(dá)式
*/
NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];
BOOL isMatch1 = [pred1 evaluateWithObject:self];
NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];
BOOL isMatch2 = [pred2 evaluateWithObject:self];
NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];
BOOL isMatch3 = [pred3 evaluateWithObject:self];
if (isMatch1 || isMatch2 || isMatch3) {
return YES;
}else{
return NO;
}
}
手機(jī)號段匯總:
移動
139挟纱、138、137、136容诬、135泳桦、134澈侠、159桥言、158延旧、157谋国、150、151迁沫、152芦瘾、
147(數(shù)據(jù)卡)闷盔、188、187旅急、182逢勾、183、184藐吮、178
聯(lián)通
130溺拱、131、132谣辞、156迫摔、155、186泥从、185句占、145(數(shù)據(jù)卡)、176
電信
133躯嫉、153纱烘、189、180祈餐、181擂啥、177、173(待放)
前3位是網(wǎng)絡(luò)識別號 , 4-7位是地區(qū)編碼 , 8-11位是用戶號碼
“正確”的讀法:1XX-XXXX-XXXX,遇到三位 ,三位的讀號碼的,真的別扭
驗證郵箱的有效性:
NSString *emailRegex = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailRegex];
[pre evaluateWithObject:@"你輸入的郵箱"];//此處返回的是BOOL類型,YES or NO;
驗證身份證號碼的有效性:
NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
[pre evaluateWithObject:@"你輸入的身份證號碼"];//此處返回的是BOOL類型,YES or NO;