正则表达式的使用

在项目中经常会要求用户输入一些信息,比如注册 登录 输入手机号,验证码,填写个人信息 如填写身份证等,有时候会输入错误,为了更好的提醒到用户,项目中用到了 正则匹配。
对于正则表达式的讲解可以参考此链接:正则表达式的使用

在项目中用到了字符串分类,通过对输入的字符进行正则匹配

#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;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值