美文网首页iOS开发iOS学习iOS程序猿
iOS开发常用正则表达式

iOS开发常用正则表达式

作者: 乂滥好人 | 来源:发表于2016-10-24 13:59 被阅读101次

    创建一个工具类,继承自NSObject,方便调用

    .h文件(类方法)

    #import <Foundation/Foundation.h>
    @interface Utils : NSObject
    
    #pragma mark- 正则匹配手机号
    + (BOOL)checkTelNumber:(NSString *) telNumber;
    
    #pragma mark- 正则匹配用户密码6-18位数字和字母组合
    + (BOOL)checkPassword:(NSString *) password;
    
    #pragma mark- 正则匹配用户姓名,20位的中文或英文
    + (BOOL)checkUserName : (NSString *) userName;
    
    #pragma mark- 正则匹配用户身份证号
    + (BOOL)checkUserIdCard: (NSString *) idCard;
    
    #pragma mark- 正则匹验证码,一般4位的数字
    + (BOOL)checkEmployeeNumber : (NSString *) number;
    
    #pragma mark- 正则匹配用出生年月日
    + (BOOL)checkDateOfBirth:(NSString *)birth;
    

    </br>
    .m文件(方法实现)

    #import "Utils.h"
    @implementation Utils
    
    #pragma mark- 正则匹配手机号
    + (BOOL)checkTelNumber:(NSString *) telNumber
    {
        // 目前已经包括了市面上所有手机运营商(包括虚拟运营商)
        NSString *pattern = @"(134|135|136|137|138|139|150|151|152|157|158|159|182|183|184|187|178|188|147|1705|130|131|132|145|155|156|176|185|186|1709|133|153|177|180|181|189|134|1700)\\d{8}";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
        BOOL isMatch = [pred evaluateWithObject:telNumber];
        return isMatch;
    }
    
    #pragma mark- 正则匹配用户密码6-10位数字和字母组合({6,10}控制密码长度)
    + (BOOL)checkPassword:(NSString *) password
    {
        NSString *pattern = @"^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,10}";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
        BOOL isMatch = [pred evaluateWithObject:password];
        return isMatch;
    }
    
    #pragma mark- 正则匹配用户姓名,20位的中文或英文( 0-9 表示可以输入数字 {1,20} 表示控制长度)
    + (BOOL)checkUserName : (NSString *) userName
    {
        NSString *pattern = @"^[a-zA-Z0-9一-龥]{1,20}";
        // 如下写法 添加 [a-zA-Z] 则表示必须要以字母开头
    //    NSString *pattern = @"^[a-zA-Z][a-zA-Z0-9一-龥]{1,20}";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
        BOOL isMatch = [pred evaluateWithObject:userName];
        return isMatch;
    }
    
    #pragma mark- 正则匹配用户身份证号15或18位
    + (BOOL)checkUserIdCard: (NSString *) idCard
    {
        NSString *pattern = @"[1-6][0-7][\\d]{4}((19[\\d]{2})|(20[0-1][\\d]))((0[1-9])|(1[0-2]))((0[1-9])|([1-2]\\d)|(3[0-1]))[\\d]{3}[\\dx|X]";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
        BOOL isMatch = [pred evaluateWithObject:idCard];
        return isMatch;
    }
    
    #pragma mark- 正则匹配验证码,一般4位的数字
    + (BOOL)checkEmployeeNumber : (NSString *) number
    {
        NSString *pattern = @"^[0-9]{4}";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
        BOOL isMatch = [pred evaluateWithObject:number];
        return isMatch;
    }
    
    #pragma mark- 正则匹配用出生年月日
    + (BOOL)checkDateOfBirth:(NSString *)birth
    {
        // 这里是用 / 来分隔年月日 ,最大能输入2019   格式如:1991/11/18
        NSString *pattern = @"((19[\\d]{2})|(20[0-1][\\d]))/((0[1-9])|(1[0-2]))/((0[1-9])|([1-2]\\d)|(3[0-1]))";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
        BOOL isMatch = [pred evaluateWithObject:birth];
        return isMatch;
    }
    

    </br>

    方法调用示例(在需要使用的地方包含头文件#import Utils.h)

    if ([Utils checkDateOfBirth:@"1959/11/18"]) {
                 DLog(@"是出生年月日");
             }else{
                 DLog(@"不是出生年月日");
             }
    }
    

    相关文章

      网友评论

        本文标题:iOS开发常用正则表达式

        本文链接:https://www.haomeiwen.com/subject/aihluttx.html