iOS开发-UITextField手机号和邮箱验证

十度 IOS 2015年12月01日 收藏

不管是网页是手机,用户注册登录的时候绝大数时候都需要手机号码和邮箱地址,而且有些App会限制只能使用手机号注册,iOS方面邮箱正则比较简单,不过手机号码验证找了一下网上的,发现三大运营商的号码段有所变化,通过最新的号码段判断用户手机验证的时候出错概率会小,如果有遗漏的号码段,欢迎补充。

  1. /*手机验证 */
  2. + (BOOL)isMobileNumber:(NSString *)mobileNum {
  3. /**
  4. * 手机号码
  5. * 移动:134/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178
  6. * 联通:130/131/132/155/156/185/186/145/176
  7. * 电信:133/153/180/181/189/177
  8. */
  9. NSString *MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
  10. /**
  11. * 中国移动:China Mobile
  12. * 134[0-8]/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178
  13. */
  14. NSString *CM = @"^1(34[0-8]|(3[5-9]|5[0127-9]|8[23478]|47|78)\\d)\\d{7}$";
  15. /**
  16. * 中国联通:China Unicom
  17. * 130/131/132/152/155/156/185/186/145/176
  18. */
  19. NSString *CU = @"^1(3[0-2]|5[256]|8[56]|45|76)\\d{8}$";
  20. /**
  21. * 中国电信:China Telecom
  22. * 133/153/180/181/189/177
  23. */
  24. NSString *CT = @"^1((33|53|77|8[019])[0-9]|349)\\d{7}$";
  25. NSPredicate *regextestmobile =
  26. [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
  27. NSPredicate *regextestcm =
  28. [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
  29. NSPredicate *regextestcu =
  30. [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
  31. NSPredicate *regextestct =
  32. [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
  33. if (([regextestmobile evaluateWithObject:mobileNum] == YES) ||
  34. ([regextestcm evaluateWithObject:mobileNum] == YES) ||
  35. ([regextestct evaluateWithObject:mobileNum] == YES) ||
  36. ([regextestcu evaluateWithObject:mobileNum] == YES)) {
  37. return YES;
  38. } else {
  39. return NO;
  40. }
  41. }
  42.  
  43. /*邮箱验证 */
  44. + (BOOL)isValidateEmail:(NSString *)email {
  45. NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
  46. NSPredicate *emailTest =
  47. [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
  48. return [emailTest evaluateWithObject:email];
  49. }