专栏首页Aliceios 常用的正则表达式(手机号邮箱md5加密验证空字符串等)

ios 常用的正则表达式(手机号邮箱md5加密验证空字符串等)

可以写一个nssring的category 给nsstring 增加一些方法,而这些方法就是一些正则表达式。

比如写一个叫做Helper的类  创建完了就是 NSString+Helper

然后在进行编写 .h 和.m文件

#pragma mark - 验证相关
/* 验证相关  */

//1.是否是手机号
- (BOOL)isMobileNumber;

//2.是否是邮箱
-(BOOL)isValidateEmail;

//3.是否是空字符串
- (BOOL)isNullStr;

//4.是否是空对象
-(BOOL)isNull;

//5.数字转字符串
+(NSString*) stringFromInteger:(NSInteger)num;

//6.密码是否符合彼标准 8-14位字母数组的组合
-(BOOL)isValidatePwd;


#pragma mark - 功能相关
/* 功能相关 */

//1.md5加密
- (NSString *) md5;

//2.将字符串的首尾空格去掉
- (NSString *) trim;

.m文件

/* 验证相关  */

//1.是否是手机号
- (BOOL)isMobileNumber{
    NSString * MOBILE = @"^1[3-9]\\d{9}$";
    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    
    if ([regextestmobile evaluateWithObject:self] == YES) {
        return YES;
    }else{
        return NO;
    }
}

//2.是否是邮箱
-(BOOL)isValidateEmail{
    NSString *emailRegex = @"^([a-z0-9A-Z]+[-_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:self];
}

//3.是否是空字符串
- (BOOL)isNullStr{
    if ([self isEqualToString:@"<NULL>"]) {
        return YES;
    }else if ([self isEqualToString:@"(null)"]){
        return YES;
    }else if ([self isEqualToString:@"(NULL)"]){
        return YES;
    }else if ([self isEqualToString:@"<null>"]){
        return YES;
    }
    return NO;
    
}

//4.是否是空对象
-(BOOL)isNull{
    // 判断是否为空串
    if ([self isEqual:[NSNull null]]) {
        return YES;
    }
    else if ([self isKindOfClass:[NSNull class]])
    {
        return YES;
    }
    else if (self==nil){
        return YES;
    }
    return NO;
    
}

//5.数字转字符串
+(NSString*) stringFromInteger:(NSInteger)num{
    return [NSString stringWithFormat:@"%ld",num];
}

//6.密码是否符合彼标准 8-14位字母数组的组合
-(BOOL)isValidatePwd{
    NSString *pwdRegex = @"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,14}$";
    NSPredicate *pwdTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pwdRegex];
    return [pwdTest evaluateWithObject:self];
}




#pragma mark - 功能相关
/* 功能相关 */

//1.md5加密
- (NSString *) md5{
    const char* str = [self UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(str, (CC_LONG)strlen(str), result);
    
    NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH*2];
    for(int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {
        [ret appendFormat:@"%02x",result[i]];
    }
    return ret;
}

//2.将字符串的首尾空格去掉
- (NSString *) trim{
    return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

这样就 大功告成了。使用的时候 导入类名:#import "NSString+Helper"

然后用的时候 ,就可以直接用了 

比如:

//验证电话号码
    NSString *phoneNUM = @"17778176004";
    NSLog(@"phoneNUM:%d",[phoneNUM isMobileNumber]);
    
    //邮箱验证
    NSString *emailStr = @"673658917@qq.com";
    NSLog(@"emailStr:%d",[emailStr isValidateEmail]);
    
    
    //md5加密 这个规则需要自己设置 前后台统一就好了
    NSString *md5Str = @"abcdefg";
    NSLog(@"md5Str:%@",[md5Str md5]);
    
    //去掉前后的空格
    NSString *trimStr = @"    1234567890    ";
    NSLog(@"trimStr:%@",[trimStr trim]);
    
    //是否是空字符串
    NSString *nullStr = @"(null)";
    NSLog(@"nullStr:%d",[nullStr isNullStr]);
    
    //是否是空对象 貌似设置为空的时候就掉不起来下边的方法
    NSString *nullObj = nil;
    [nullObj isNull];
    NSLog(@"null:%d",[nullObj isNull]);

 如果在使用过程中遇见什么问题,可以联系我qq  673658917@qq.com

一起成长。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • iOS 获取通讯录里边的电话号码AddressBook

    1  首先导入库 <AddressBook/AddressBook.h> 2 然后在导入#import <AddressBook/AddressBook.h>文...

    用户1219438
  • 效果类似于label从下往上滑(采用uiTableView实现)

    首先附上效果图 ? ? 进行描述一下:效果就是类似于是一个竖直方向的滚动视图 并且方向是从下往上  并且能够一直这样循环下去。 代码“ // // ViewC...

    用户1219438
  • iOS iOS与html进行交互

    实现的 效果就是上边那样:首先通过webview 进行网络请求 然后进行显示。          然后点击下一页的按钮 通过js的响应显示另一个网页      ...

    用户1219438
  • 数据库基本语法

    梦_之_旅
  • TCP协议的连接和释放

    TCP传输控制协议,是一个面向连接的协议。在运用此协议进行数据传输前都会进行连接的建立工作(三次握手);当数据传输完毕,连接的双方都会通知对方要释放此连接(四次...

    JouyPub
  • 大学两年读了200多本书,送你这28句话(下)

    作为一名INFP,一个二十来岁,曾经迷茫、焦虑、浮躁、悲观、讨厌自己性格并苦苦纠结于人生的意义等“大哉问”的人,在过去两年读了两百来本书,被许多句子感动,乃至治...

    古柳_DesertsX
  • 黄仁勋刚刚发布全球最大GPU:Quadro GV100 售价仅39.9万美元

    AiTechYun 编辑:nanan ? 英伟达再一次惊艳全球! 在美国加州圣何塞举行的GTC 2018大会上,英伟达黄仁勋发布了全球最大的GPU。 ? 会上,...

    AiTechYun
  • 使用wireshark抓取TCP包传输分析

    在我自己机子上安装的是wireshark2.2.6版本,随机查找了某个TCP连接,并跟踪流。

    用户6786055
  • BAT扯动产业互联网大风口,何为取胜之道?

    如果说以产业互联网为代表的全新时代已经来临的话,或许一点都不为过。纵观当下的市场,几乎所有的行业都在发生一场以B端行业为主要对象的全新进化,零售、金融、制造等诸...

    孟永辉
  • 分享一个WebGL开发的网站-用JavaScript + WebGL开发3D模型

    今天我要给大家分享一个用WebGL开发的网站,感兴趣的朋友可以在Chrome开发者工具里调试它的源码来学习WebGL。

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券