NSString使用NSPredicate匹配正则表达式

2020-11-21  本文已影响0人  文子飞_
NSString+Regular.h
@interface NSString (Regular)

/// 只允许汉字、大小写、数字
- (BOOL)isContainsillegalCharacter;

/// 是否含有汉字、空格
- (BOOL)isContainsChineseAndSpace;


// 判断是否是纯汉字
- (BOOL)isChinese;
//  判断是否含有汉字、空格(建议使用)
- (BOOL)isIncludeChineseAndSpace;

@end
NSString+Regular.m
@implementation NSString (Regular)

- (BOOL)isContainsillegalCharacter {
    
    // 允许汉字、大小写、数字
    NSString *str =@"^[A-Za-z0-9\\u4e00-\u9fa5]+$";
    
    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", str];
    //NSLog(@"self = %@", self);
    if ([predicate evaluateWithObject:self]) {
        return NO;
    }

    return YES;

}

- (BOOL)isContainsChineseAndSpace {
    NSString *str = @"[\u4e00-\u9fa5 ]";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", str];
    if ([predicate evaluateWithObject:self]) {
        return YES;
    }
    return NO;
}


- (BOOL)isChinese {
    NSString *match = @"(^[\u4e00-\u9fa5]+$)";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF matches %@", match];
    return [predicate evaluateWithObject:self];
}

- (BOOL)isIncludeChineseAndSpace {
    for(int i=0; i< [self length];i++) {
        int a =[self characterAtIndex:i];
        if( a >0x4e00&& a <0x9fff) {
            return YES;
        }
    }
    if ([self containsString:@" "]) {
        return YES;
    }
    return NO;
}

@end
上一篇 下一篇

猜你喜欢

热点阅读