iOS简单验证中文名的有效性

来源:互联网 发布:kafka java获取offset 编辑:程序博客网 时间:2024/05/22 04:38

验证中文名的有效性

概述

验证中文姓名的有效性。

验证规则:

这里代码中中文名汉字字数小于两个汉字即为false;姓名长度有所区别,正常长度最长设置为<=8个汉字,如果是中间带{•|·}的名字,则限制长度为<=15个汉字;

如果使用过程中遇到更长的,则自行修改该限制,或者联系笔者也可以。
通过正则表达式来判断。附:正则表达式30分钟入门教程。

下文中用到的正则表达式字符串为:

  • 正常中文名"^[\u4e00-\u9fa5]+$"
  • 带点{•|·}的中文名"^[\u4e00-\u9fa5]+[·•][\u4e00-\u9fa5]+$"

该正则只能简单的判断身份证号码的有效性,笔者对正则表达式也是了解比较浅。

如果有好的建议,希望及时联系我,万分感谢【抱拳】。

Code

源码下载地址,源码中包含各种字符串(手机号、邮箱、中文名、身份证号等)校验方法

+ (BOOL) checkEmptyString:(NSString *) string {    if (string == nil) return string == nil;    NSString *newStr = [string stringByReplacingOccurrencesOfString:@" " withString:@""];    return [newStr isEqualToString:@""];}
/** 判断是否是有效的中文名 @param realName 名字 @return 如果是在如下规则下符合的中文名则返回`YES`,否则返回`NO` 限制规则:     1. 首先是名字要大于2个汉字,小于8个汉字    2. 如果是中间带`{•|·}`的名字,则限制长度15位(新疆人的名字有15位左右的,之前公司实名认证就遇到过),如果有更长的,请自行修改长度限制    3. 如果是不带小点的正常名字,限制长度为8位,若果觉得不适,请自行修改位数限制 *PS: `•`或`·`具体是那个点具体处理需要注意* */+ (BOOL)isVaildRealName:(NSString *)realName{    if ([MMCheckTool checkEmptyString:realName]) return NO;    NSRange range1 = [realName rangeOfString:@"·"];    NSRange range2 = [realName rangeOfString:@"•"];    if(range1.location != NSNotFound ||   // 中文 ·       range2.location != NSNotFound )    // 英文 •    {        //一般中间带 `•`的名字长度不会超过15位,如果有那就设高一点        if ([realName length] < 2 || [realName length] > 15)        {            return NO;        }        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^[\u4e00-\u9fa5]+[·•][\u4e00-\u9fa5]+$" options:0 error:NULL];        NSTextCheckingResult *match = [regex firstMatchInString:realName options:0 range:NSMakeRange(0, [realName length])];        NSUInteger count = [match numberOfRanges];        return count == 1;    }    else    {        //一般正常的名字长度不会少于2位并且不超过8位,如果有那就设高一点        if ([realName length] < 2 || [realName length] > 8) {            return NO;        }        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^[\u4e00-\u9fa5]+$" options:0 error:NULL];        NSTextCheckingResult *match = [regex firstMatchInString:realName options:0 range:NSMakeRange(0, [realName length])];        NSUInteger count = [match numberOfRanges];        return count == 1;    }}

Test

//中文名{    BOOL a = [MMCheckTool isVaildRealName:@"乔布斯"];    BOOL b = [MMCheckTool isVaildRealName:@"尼古拉斯•乔布斯"];    BOOL c = [MMCheckTool isVaildRealName:@"乔"];    BOOL d = [MMCheckTool isVaildRealName:@"哈哈哈•付加工费是否健康按时购房款及安防爱国卡萨"];    BOOL e = [MMCheckTool isVaildRealName:@"21345678"];    BOOL f = [MMCheckTool isVaildRealName:@"abcdefg"];    BOOL g = [MMCheckTool isVaildRealName:@"-=+_*@%#"];    BOOL h = [MMCheckTool isVaildRealName:@""];    BOOL i = [MMCheckTool isVaildRealName:nil];    NSLog(@"中文名=====》%d%d%d%d%d%d%d%d%d",a,b,c,d,e,f,g,h,i); //打印结果为 110000000}

这里写图片描述

0 0
原创粉丝点击