我们在做项目的时候,难免会遇到给手机号发送验证码的情况,这时,我们需要首先判断一下用户输入的手机号是否为正确的手机号,下面是用正则表达式判断是否为正确的手机号 ,BOOL 类型的 isMatch 就是 我们 想要的结果。代码如下:
NSString *regex =@"^((1[3-8][0-9])|(147)|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
NSPredicate *pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", regex];
BOOL isMatch = [predevaluateWithObject:phoneNumberStr];
好吧让我们来分析一下这个正则表达式的意思,^ 表示开始, () 表示域段,我们可以把它当做平常的小括号来看,| 表示 或 ,第一个小括号里面说 1 开头 第二个字符 是 3-8 之间的数字, 第三个字符是0-9之间的数字,
然后或 第二个小括号中的是 147,然后 或 15开头加上除去4以外的数字,再或18开头第三个是0 或者5-9之间的一个数字。最后跟上8位0-9之间的数字。总共是 11位,也就是说前面一个 小括号中包含的四个小括号 就是为了判断手机号码的前三个数字。因为手机号码的前三个数字最难判断。
我们可以吧这三行代码加入到我们的工程中判断手机号的地方,就能够使用了。