本文主要是介绍iOS简单验证中文名的有效性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
验证中文名的有效性
概述
验证中文姓名的有效性。
验证规则:
这里代码中中文名汉字字数小于两个汉字即为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
}
这篇关于iOS简单验证中文名的有效性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!