iOS验证身份证号的有效性(仅18位号)

验证身份证号的有效性(仅18位号)

概述

验证身份证号的有效性。这里仅支持18位身份证号的验证,因为15位的身份证号码基本上以及没有了,笔者认为可以忽略。
通过正则表达式来判断。附:正则表达式30分钟入门教程

下文中用到的正则表达式字符串为"^[1-9][0-9]{5}[1-9][0-9]{3}((0[0-9])|(1[0-2]))(([0|1|2][0-9])|3[0-1])[0-9]{3}([0-9]|X|x)$"

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

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

Code

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

+ (BOOL) checkEmptyString:(NSString *) string {

    if (string == nil) return string == nil;

    NSString *newStr = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
    return [newStr isEqualToString:@""];
}
/**
 判断是否是有效的身份证号码

 @param idCardNo 身份证号字符串
 @return 如果是有效的身份证号,返回`YES`, 否则返回`NO`

 仅允许  数字 && 最后一位是{数字 || Xx})
 */
+ (BOOL)isVaildIDCardNo:(NSString *)idCardNo
{
    if ([MMCheckTool checkEmptyString:idCardNo]) return NO;

    NSString *regxStr = @"^[1-9][0-9]{5}[1-9][0-9]{3}((0[0-9])|(1[0-2]))(([0|1|2][0-9])|3[0-1])[0-9]{3}([0-9]|X|x)$";

    NSPredicate *idcardTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regxStr];
    return [idcardTest evaluateWithObject:idCardNo];
}

Test

//身份证号
{
    BOOL a = [MMCheckTool isVaildIDCardNo:@"630121199305286712"];
    BOOL b = [MMCheckTool isVaildIDCardNo:@"63012119930528671X"];
    BOOL c = [MMCheckTool isVaildIDCardNo:@"63012119930528671x"];
    BOOL d = [MMCheckTool isVaildIDCardNo:@"630121299338676712"];
    BOOL e = [MMCheckTool isVaildIDCardNo:@"1286090267@qq.com"];
    BOOL f = [MMCheckTool isVaildIDCardNo:@"15121178175"];
    BOOL g = [MMCheckTool isVaildIDCardNo:@""];
    BOOL h = [MMCheckTool isVaildIDCardNo:nil];


    NSLog(@"身份证号=====》%d%d%d%d%d%d%d%d",a,b,c,d,e,f,g,h); //打印结果为 11100000
}

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值