校验字符串

目录:
1、校验字符串是否为空
2、判断字符串是否符合邮政编码格式
3、判断字符串是否全是整数
4、判断字符串是否全部是字符
5、判断用户名是否符合要求
6、判断密码是否符合要求
7、判断电话号码是否合法
8、判定string第一位是否从A-Z
9、验证数字及位数
10、验证字母及位数
11、验证数字或字母
12、验证邮箱格式是否正确

1、是否为空,返回 YES|NO

+(BOOL)isEmptyString:(NSString*)string
{
    if (string == nil) 
    {
        // 如果字符串为空,返回YES
        return YES;
    }

    //去空格之后判断length是否为0(此判断方法也可用于判断其他字符)
    NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
    NSString *content = [string stringByTrimmingCharactersInSet:whitespace];

    if ([content length] == 0)
    {
         return YES;//length为0,返回YES
    }
    
    return NO;//其余情况返回NO
}

2、判断字符串是否符合邮政编码格式

+ (BOOL)checkZipCode:(NSString *)coder
{
    if (coder.length != 6)
    {
         return NO;//不是6位,不符合。
    }
    
    NSError *error = NULL;
    NSString *ruleString = @"[0-9]\\d{5}(?!\\d)";//邮政编码规则
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:ruleString
                                                                           options:NSRegularExpressionCaseInsensitive
                                                                             error:&error];
    NSUInteger numberOfMatches = [regex numberOfMatchesInString:coder
                                                        options:0
                                                          range:NSMakeRange(0, [coder length])];

    if(numberOfMatches == 1)
    {
        return YES;//numberOfMatches为1时符合规则。
    }
    else
    {
        return NO;
    }
}

3、判断输入字符串是否全部是整数

+ (BOOL)isPureInt:(NSString *)string
{
    NSScanner *scan = [NSScanner scannerWithString:string];

    int value;
  
    BOOL scanIntVal = [scan scanInt:&value] ;
    BOOL scanAtEnd = [scan isAtEnd];
    BOOL intValue = [string intValue] > 0;

    //满足以上三个条件则是整数
    return (intVal && scanAtEnd && intValue);
}

4、判断输入是否全部都是字符(不允许有汉字、数字等,不能为空)

+ (BOOL)checkAllIsLetter:(NSString *)psw
{
    BOOL hasOther = NO;
    int length = [psw length];

    if (length == 0) 
    {
        return NO;//输入字符串为空
    }
    
    //判断是否有汉字
    for (int i = 0; i < length; i++) 
    {
        NSRange range = NSMakeRange(i, 1);
        NSString *subString = [psw substringWithRange:range];
        const char *cString = [subString UTF8String];
        
        if (strlen(cString) == 3)
        {
            return NO;//有汉字
        }
    }
    
    //判断是否含有数字
    const char *s = [psw UTF8String];//转化成C语言字符串

    for (int i = 0; i < length; i++)
    {
        if (s[i] >= '0' && s[i] <= '9')
        {
            hasOther = YES;//含有数字
        }
    }

    return !hasOther;
}

5、判断用户名是否符合要求( 1:小于30位。2:数字+字母。3:不能包含其它字符)

+ (BOOL)checkUserName:(NSString *)psw
{
    BOOL hasOther = NO;
    int length = [psw length];
    
    //判断是否是小于30位
    if(length > 30)
    {
        return NO;
    }
    
    //判断是否有汉字
    for (int i = 0; i < length; i++)
    {
        NSRange range = NSMakeRange(i, 1);
        NSString *subString = [psw substringWithRange:range];
        const char *cString = [subString UTF8String];

        if  (strlen(cString) == 3)
            return NO;
    }

    //判断是否是数字+字母
    const char *s=[psw UTF8String];
    for(int i = 0;i < length; i++)
    {
        if (s[i] >= '0' && s[i] <= '9')
            continue;
        else if (s[i] >= 'a' && s[i] <= 'z')
            continue;
        else if (s[i] >= 'A' && s[i] <= 'Z')
            continue;
        else
            hasOther = YES;
    }
    
    if(hasOther)
        return NO;
    else
        return YES;
}

6、判断密码是否符合要求(1:8-16位置。2:数字+字母。3:不能全是数字或全是字母)

+ (BOOL)checkPsw:(NSString *)psw
{
    BOOL hasNum = NO;
    BOOL hasLetter = NO;
    BOOL hasOther = NO;
    
    int length = [psw length];
    
    //判断是否是8-16位
    if (length > 16 || length < 8)
        return NO;
    
    //判断是否有汉字
    for (int i = 0; i < length; i++)
    {
        NSRange range = NSMakeRange(i, 1);
        NSString *subString = [psw substringWithRange:range];
        const char *cString = [subString UTF8String];

        if (strlen(cString) == 3)
            return NO;
    }
    
    //判断是否是数字+字母
    const char *s=[psw UTF8String];
    for (int i = 0;i < length; i++)
    {
        if (s[i] >= '0' && s[i] <= '9')
            hasNum = YES;
        else if (s[i] >= 'a' && s[i] <= 'z')
            hasLetter = YES;
        else if (s[i] >= 'A' && s[i] <= 'Z')
            hasLetter = YES;
        else
            hasOther = YES;
    }
    
    if (hasNum && hasLetter && !hasOther)
        return YES;
    else
        return NO;
}

7、判断电话号码是否合法

+ (BOOL)isMobileNumber:(NSString *)mobileNum
{
    /**
     * 手机号码
     * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
     * 联通:130,131,132,152,155,156,185,186
     * 电信:133,1349,153,180,189
     */
    //NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
    /**
     10         * 中国移动:China Mobile
     11         * 134[0-8],135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,17**
     12         */
    NSString *CM = @"^1(34[0-8]|(3[5-9]|5[0127-9]|8[23478]|7[0-9])\\d)\\d{7}$";
    /**
     15         * 中国联通:China Unicom
     16         * 130,131,132,155,156,185,186,17**
     17         */
    //modify by zhangcz, 添加联通4G,176的号,而且没有152的号
    NSString *CU = @"^1(3[0-2]|5[56]|8[56]|7[6])\\d{8}$";
    /**
     20         * 中国电信:China Telecom
     21         * 133,1349,153,180,189,17**
     22         */
    NSString *CT = @"^1((33|53|8[09]|7[0-9])[0-9]|349)\\d{7}$";
    
    //NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
    NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
    NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
    
    if (([regextestcm evaluateWithObject:mobileNum] == YES)
        || ([regextestct evaluateWithObject:mobileNum] == YES)
        || ([regextestcu evaluateWithObject:mobileNum] == YES))
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

8、判定string第一位是否是从A-Z

/*
 *判定string第一位是否是从A-Z
 */
+ (BOOL)isAlphabet:(NSString *)firstAlphabet
{
    NSString *IDENTITYNUM= @"^[A-Z]$";
    NSPredicate *regextestBankNum = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",IDENTITYNUM];

    if ([regextestBankNum evaluateWithObject:firstAlphabet] == YES)
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

9、验证数字及位数(numStr:需要验证的字符串,count:需要验证的位数)

+ (BOOL)isNumber:(NSString*)numStr count:(int)count
{
    NSString * regex = @"^[0-9]*$";
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

    if ([pred evaluateWithObject:numStr] && numStr.length == count) 
    {
        return YES;
    }

    return NO;
}

10、验证字母及位数

+(BOOL)isLetter:(NSString *)letterStr count:(int)count
{
    NSString *regex = @"^[A-Za-z]*$";
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

    if ([pred evaluateWithObject:letterStr] && letterStr.length == count) 
    {
        return YES;
    }

    return NO;
}

11、验证是数字或字母

+(BOOL)isLetterOrNum:(NSString*)str count:(int)count
{
    NSString * regex = @"^[A-Za-z0-9]*$";
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

    if ([pred evaluateWithObject:str] && str.length == count)
    {
        return YES;
    }

    return NO;
}

12、判断邮箱格式是否正确

+ (BOOL)isValidateEmail:(NSString*)email
{
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@",emailRegex];

    return [emailTest evaluateWithObject:email];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容

  • 一、字符串在C#中,字符串是一系列不可修改的Unicode字符,创建字符串后,就不能修改它。要创建字符串,最常用的...
    CarlDonitz阅读 1,273评论 0 2
  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,142评论 0 9
  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 3,996评论 0 20
  • 这天下午,阳光明媚,伴随着淡淡的清风送来的花香,远远望去就见一对璧人坐在庭院中,一人沏着茶,一人看着书,好不惬意。...
    黛韵阅读 205评论 0 0
  • 一个阳光明媚的早上,我们要举行运动会啦!我们穿着统一的衣服来到了大操场,带着洁净的手套,有说有笑真开心! 我们...
    佳妹儿CC阅读 205评论 0 0