需要一个简单的验证身份证号的正则表达式,从网上查了很多,都有问题,主要是只要超过15位,都能够通过,于是自己查了半天手册,写了下面这个式子,能够满足简单的要求:
1、15位或18位,如果是15位,必需全是数字。
2、如果是18位,最后一位可以是数字或字母Xx,其余必需是数字。
/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
从这个表达式想到的:
1、正则表达式首先是要通过正确的
2、限制不正确
3、可以不限制其中的某此规则,但一定要让正确的先通过。
//邮箱
@H_403_36@ + (BOOL) validateEmail:(NSString *)email
@H_403_36@ {
@H_403_36@ NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+//.[A-Za-z]{2,4}";
@H_403_36@ NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailRegex];
@H_403_36@ return [emailTest evaluateWithObject:email];
@H_403_36@ }
@H_403_36@
@H_403_36@
@H_403_36@ //手机号码验证
@H_403_36@ + (BOOL) validateMobile:(NSString *)mobile
@H_403_36@ {
@H_403_36@ //手机号以13, 15,18开头,八个 /d 数字字符
@H_403_36@ NSString *phoneRegex = @"^((13[0-9])|(15[^4,//D])|(18[0,0-9]))//d{8}$";
@H_403_36@ NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
@H_403_36@ return [phoneTest evaluateWithObject:mobile];
@H_403_36@ }
@H_403_36@
@H_403_36@
@H_403_36@ //车牌号验证
@H_403_36@ + (BOOL) validateCarNo:(NSString *)carNo
@H_403_36@ {
@H_403_36@ NSString *carRegex = @"^[/u4e00-/u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[a-zA-Z_0-9_/u4e00-/u9fa5]$";
@H_403_36@ NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",carRegex];
@H_403_36@ NSLog(@"carTest is %@",carTest);
@H_403_36@ return [carTest evaluateWithObject:carNo];
@H_403_36@ }
@H_403_36@
@H_403_36@
@H_403_36@ //车型
@H_403_36@ + (BOOL) validateCarType:(NSString *)CarType
@H_403_36@ {
@H_403_36@ NSString *CarTypeRegex = @"^[/u4E00-/u9FFF]+$";
@H_403_36@ NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CarTypeRegex];
@H_403_36@ return [carTest evaluateWithObject:CarType];
@H_403_36@ }
@H_403_36@
@H_403_36@
@H_403_36@ //用户名
@H_403_36@ + (BOOL) validateUserName:(NSString *)name
@H_403_36@ {
@H_403_36@ NSString *userNameRegex = @"^[A-Za-z0-9]{6,20}+$";
@H_403_36@ NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",userNameRegex];
@H_403_36@ BOOL B = [userNamePredicate evaluateWithObject:name];
@H_403_36@ return B;
@H_403_36@ }
@H_403_36@
@H_403_36@
@H_403_36@ //密码
@H_403_36@ + (BOOL) validatePassword:(NSString *)passWord
@H_403_36@ {
@H_403_36@ NSString *passWordRegex = @"^[a-zA-Z0-9]{6,20}+$";
@H_403_36@ NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex];
@H_403_36@ return [passWordPredicate evaluateWithObject:passWord];
@H_403_36@ }
@H_403_36@
@H_403_36@
@H_403_36@ //昵称
@H_403_36@ + (BOOL) validateNickname:(NSString *)nickname
@H_403_36@ {
@H_403_36@ NSString *nicknameRegex = @"^[/u4e00-/u9fa5]{4,8}$";
@H_403_36@ NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex];
@H_403_36@ return [passWordPredicate evaluateWithObject:nickname];
@H_403_36@ }
@H_403_36@
@H_403_36@
@H_403_36@ //身份证号
@H_403_36@ + (BOOL) validateIdentityCard: (NSString *)identityCard
@H_403_36@ {
@H_403_36@ BOOL flag;
@H_403_36@ if (identityCard.length <= 0) {
@H_403_36@ flag = NO;
@H_403_36@ return flag;
@H_403_36@ }
@H_403_36@ NSString *regex2 = @"^(//d{14}|//d{17})(//d|[xX])$";
@H_403_36@ NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
@H_403_36@ return [identityCardPredicate evaluateWithObject:identityCard];
@H_403_36@ }