在项目中经常会要求用户输入一些信息,比如注册 登录 输入手机号,验证码,填写个人信息 如填写身份证等,有时候会输入错误,为了更好的提醒到用户,项目中用到了 正则匹配。
对于正则表达式的讲解可以参考此链接:正则表达式的使用
在项目中用到了字符串分类,通过对输入的字符进行正则匹配
#import <Foundation/Foundation.h>
@interface NSString (Custom)
typedef enum {
QCValibTypePhone = 0,//电话
QCValibTypeVerifyCode,//验证码
QCValibTypeLoginPassword,//登录密码
QCValibTypePayPassword,//支付密码
QCValibTypeIDCard,//身份证
QCValibTypeLogisticsNumber,//物流单号
QCValibTypeEmail,//邮箱
QCValibTypeBankCard//银行卡
}QCValibType;
//判断是否匹配
- (BOOL)isValib:(QCValibType)type;
NSString 分类.m 文件相应实现如下:
#import "NSString+Custom.h"
@implementation NSString (Custom)
- (BOOL)isValib:(QCValibType)type
{
NSString *pattern = [self patternWithType:type];
//过滤判断是否匹配
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isInvalid = ![predicate evaluateWithObject:self];
if (isInvalid) {
//不匹配 提示错误信息
[self errorTipWithType:type];
}
return isInvalid;
}
- (NSString *)patternWithType:(QCValibType)type {
NSString *pattern = nil;
switch (type) {
case QCValibTypePhone:
pattern = @"^1[3|4|5|7|8][0-9]\\d{8}$";
break;
case QCValibTypeVerifyCode:
pattern = @"^\\d{6}$";
break;
case QCValibTypeLoginPassword:
pattern = @"^\\w{6,}$";
break;
case QCValibTypePayPassword:
pattern = @"^\\d{6}$";
break;
case QCValibTypeIDCard:
pattern = @"^\\d{15}|\\d{17}\\w$";
break;
case QCValibTypeLogisticsNumber:
pattern = @"^\\d{12}$";
break;
case QCValibTypeEmail:
pattern = @"^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
break;
default:
break;
}
return pattern;
}
//提示错误信息
- (void)errorTipWithType:(QCValibType)type {
switch (type) {
case QCValibTypePhone:
NSLog(@"手机号格式不正确!");
break;
case QCValibTypeVerifyCode:
NSLog(@"验证码格式不正确!");
break;
case QCValibTypeLoginPassword:
NSLog(@"登录密码格式不正确!");
break;
case QCValibTypePayPassword:
NSLog(@"支付密码格式不正确!");
break;
case QCValibTypeIDCard:
NSLog(@"身份证号格式不正确!");
break;
case QCValibTypeLogisticsNumber:
NSLog(@"物流编号格式不正确!");
break;
case QCValibTypeEmail:
NSLog(@"邮箱格式不正确!");
break;
default:
break;
}
}
这样的话就可以利用这个NSString分类 进行相应的判断 例如判断输入的手机号码是否是正确的格式:
if ([self.phoneTF.text isValib:QCValibTypePhone]) {
NSLog(@"手机格式不正确!");
return;
}