OC - 正则表达式(身份证号详细验证和粗略验证两种表示,后期会持续添加)

目前公司项目中,有这么一个需求。输入身份证号,当此输入框失去焦点时,判断如果身份证号是错误的,要在身份证号后面,显示一个红色的小叉号。可能会有人觉得很简单嘛,只要写个正则就好了。我开始也是这么想的,因为之前有整理过身份证号的正则表达式。然后我就自然而然的写上去了,但是悲剧的一幕发生了。我这时才知道,原来之前我整理的身份证号的正则表达式,只是最基本的判断是否是15位和18位和最后一位是否是x。

首先给出的粗略验证的方法:

/**
 *  身份证号验证(粗略验证)
 */
+ (BOOL)validateIdentityCard:(NSString *)identityCard
{
     NSString *pattern = @"(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$)";
     NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
     BOOL isMatch = [pred evaluateWithObject:identityCard];`

 return isMatch;
}

如果只是验证是否是18位纯数字或17位纯数字+x,这个方法完全可以适用。但是当你的需求类似我们公司目前的项目需求的话,那么请你仔细阅读下面的文章

真正的详细判断身份证号的正则是非常麻烦的,是有一定的规则存在的。现在就让我们来看看详细的身份证号的正则是怎么判断的吧。

目前中国实行的是第二代身份证,身份证号统一为18位,之前的15位在更换第二代身份证之后,将变成18位。

验证身份证必须满足一下规则:

1、长度必须是18位,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值