对于需要注册的APP而言,可能很多时候需要用到邮箱和手机号进行注册,也许会在客户端就对用户输入的号码进行判断,因此我也把项目中的验证过程写了下来,希望帮得到.
返回值设置为int类型,是因为手机号可能分为大陆,香港,以及国外号码,如果使用的运营商支持其他号码的短信发送,也可添加进行判断,目前因为百度短信验证只支持大陆手机号验证,所以判断方式返回值设置为1.
//大陆手机号
- (int)isPhone {
int num =0;
NSString *mobileType =@"^1[1-9][0-9]\\d{8}$";
NSPredicate *checkMobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",mobileType];
if ([checkMobile evaluateWithObject:self]) {
num =1;
}
return num;
}
//邮箱号
- (int)isEmail {
int num =0;
NSString *emailType =@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *checkEmail = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailType];
if ([checkEmail evaluateWithObject:self]) {
//格式正确
num =1;
}
return num;
}
对于车牌号的判断,{4,5}后的判断字符代表可能为港车车牌,如果是数字或字母,则为大陆车牌,如果是汉字,则为两地牌,对于其他类型,弄清楚其格式,写出对应的正则判断表达式即可.
//大陆车牌
- (int)isPlate {
int num =0;
NSString *plateType = @"^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4,5}[a-zA-Z_0-9_\u4e00-\u9fa5]$";
NSPredicate *checkPlate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",plateType];
if ([checkPlate evaluateWithObject:self]) {
num =1;
}
return num;
}