iOS开发中常用字符串验证处理操作

原创 2016年06月28日 18:01:20

特殊验证

手机号验证

 //手机号以13, 15,18开头,八个 \d 数字字符
    NSString *phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$";
    NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
    return [phoneTest evaluateWithObject:mobile];

手机号归属验证

密码格式验证

// 正则匹配用户密码6-18位数字和字母组合
+ (BOOL)checkPassword:(NSString*) password

{

NSString*pattern =@"^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,18}";

NSPredicate*pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",pattern];

BOOLisMatch = [predevaluateWithObject:password];

returnisMatch;

}

用户名格式验证

正则匹配用户姓名,20位的中文或英文

+ (BOOL)checkUserName : (NSString*) userName

{

NSString*pattern =@"^[a-zA-Z\u4E00-\u9FA5]{1,20}";

NSPredicate*pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",pattern];

BOOLisMatch = [predevaluateWithObject:userName];

returnisMatch;

}

邮箱验证

+ (BOOL) validateEmail:(NSString *)email
{
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:email];
}

银行卡号验证

+ (BOOL)isBankCard:(NSString *)cardNo{

    if (cardNo.length < 16) {
        return NO;
    }

    NSInteger oddsum = 0;     //奇数求和
    NSInteger evensum = 0;    //偶数求和
    NSInteger allsum = 0;
    NSInteger cardNoLength = (NSInteger)[cardNo length];
    // 取了最后一位数
    NSInteger lastNum = [[cardNo substringFromIndex:cardNoLength-1] intValue];
    //测试的是除了最后一位数外的其他数字
    cardNo = [cardNo substringToIndex:cardNoLength - 1];
    for (NSInteger i = cardNoLength -1 ; i>=1;i--) {
        NSString *tmpString = [cardNo substringWithRange:NSMakeRange(i-1, 1)];
        NSInteger tmpVal = [tmpString integerValue];
        if (cardNoLength % 2 ==1 ) {//卡号位数为奇数
            if((i % 2) == 0){//偶数位置

                tmpVal *= 2;
                if(tmpVal>=10)
                    tmpVal -= 9;
                evensum += tmpVal;
            }else{//奇数位置
                oddsum += tmpVal;
            }
        }else{
            if((i % 2) == 1){
                tmpVal *= 2;
                if(tmpVal>=10)
                    tmpVal -= 9;
                evensum += tmpVal;
            }else{
                oddsum += tmpVal;
            }
        }
    }

    allsum = oddsum + evensum;
    allsum += lastNum;
    if((allsum % 10) == 0)
        return YES;
    else
        return NO;
}

银行卡号所属银行验证

+(NSString *)bankOfCard:(NSString *)cardNum{
    //所需plist附件见文末
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"BankAndBin" ofType:@"plist"];
    NSDictionary *dicBank = [[NSDictionary alloc] initWithContentsOfFile:plistPath];

    NSString *strPreTen = [self getPrefixStringToIndex:10 fromString:cardNum];//[cardNum substringToIndex:10];//前10位
    NSString *strPreNine = [self getPrefixStringToIndex:9 fromString:cardNum];//[cardNum substringToIndex:9];//前9位
    NSString *strPreEight = [self getPrefixStringToIndex:8 fromString:cardNum];//[cardNum substringToIndex:8];//8
    NSString *strPreSeven =[self getPrefixStringToIndex:7 fromString:cardNum];//[cardNum substringToIndex:7];//7
    NSString *strPreSix = [self getPrefixStringToIndex:6 fromString:cardNum];//[cardNum substringToIndex:6];//前6位
    NSString *strPreFive = [self getPrefixStringToIndex:5 fromString:cardNum];//[cardNum substringToIndex:5];//5
    NSString *strPreFour = [self getPrefixStringToIndex:4 fromString:cardNum];//[cardNum substringToIndex:4];//4
    NSString *strPreThree = [self getPrefixStringToIndex:3 fromString:cardNum];//[cardNum substringToIndex:3];//前三位

    NSString *strBankInfo = @"";
    if (dicBank[strPreThree]) {
        strBankInfo = dicBank[strPreThree];
    }else if (dicBank[strPreFour]){
        strBankInfo = dicBank[strPreFour];
    }else if (dicBank[strPreFive]){
        strBankInfo = dicBank[strPreFive];
    }else if (dicBank[strPreSix]){
        strBankInfo = dicBank[strPreSix];
    }else if (dicBank[strPreSeven]){
        strBankInfo = dicBank[strPreSeven];
    }else if (dicBank[strPreEight]){
        strBankInfo = dicBank[strPreEight];
    }else if (dicBank[strPreNine]){
        strBankInfo = dicBank[strPreNine];
    }else if (dicBank[strPreTen]){
        strBankInfo = dicBank[strPreTen];
    }else{
        strBankInfo = @"未找到匹配的发卡银行";
        return strBankInfo;
    }

    NSRange range =[strBankInfo rangeOfString:@" "];
    NSString *bankName = [strBankInfo substringToIndex:range.location];
    return bankName;
}
+(NSString *)getPrefixStringToIndex:(NSInteger)index fromString:(NSString *)strAll{
    if (strAll.length>=index) {
        return  [strAll substringToIndex:index];
    }else{
        return @" ";
    }
}

身份证号验证

+ (BOOL) validateIdentityCard: (NSString *)identityCard
{
    BOOL flag;
    if (identityCard.length <= 0) {
        flag = NO;
        return flag;
    }
    NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
    NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
    return [identityCardPredicate evaluateWithObject:identityCard];
}

车牌号验证

//车牌号验证
+ (BOOL) validateCarNo:(NSString *)carNo
{
    NSString *carRegex = @"^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[a-zA-Z_0-9_\u4e00-\u9fa5]$";
    NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",carRegex];
    NSLog(@"carTest is %@",carTest);
    return [carTest evaluateWithObject:carNo];
}

银行卡号归属行验证文件:

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS实现数字,字母或符号组合的有效性验证

最近做一个项目,由于之前设计密码太过简单很容易被破解,所以升级了下密码的复杂度,要求密码有英文键盘下的数字,字母或字符至少两种,对密码字符串进行验证 思路是用正则表达式,使用NSPredicate对...
  • qiny1010
  • qiny1010
  • 2016年05月10日 22:46
  • 216

IOS最严格身份证号验证

//身份证号 + (BOOL)CheckIsIdentityCard: (NSString *)identityCard { //判断是否为空 if (identity...
  • zzzili
  • zzzili
  • 2015年10月26日 16:12
  • 2921

iOS开发之手机号验证(简单)

iOS开发手机号验证代码(简单)
  • yq910902
  • yq910902
  • 2016年03月16日 11:07
  • 1369

iOS开发之身份证号码的验证

iOS开发之身份证号码的验证
  • l2i2j2
  • l2i2j2
  • 2016年04月19日 23:54
  • 1597

iOS HPPTS证书验证

调用NSURLConnection实现HTTPS访问时,如果服务器证书是由CA机构颁发的(全球可信的机构,如verisign),连接方式和HTTP并没有区别。但是如果证书不是合法机构颁发的就需要定制证...
  • myzlhh
  • myzlhh
  • 2015年12月10日 22:23
  • 3554

iOS邮箱、手机号等常用验证功能

手机号验证 /* 手机号码 13[0-9],14[5|7|9],15[0-3],15[5-9],17[0|1|3|5|6|8],18[0-9] 移动:134[0-8],13[5-9],147,1...
  • longshihua
  • longshihua
  • 2016年12月11日 11:54
  • 1054

iOS 正则表达式验证

1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用到的就这2个文件,添加到工程中。 备用地址: http://www.cocoachina.com/bbs/job.ph...
  • hengshujiyi
  • hengshujiyi
  • 2013年07月13日 15:02
  • 10145

iOS sha1加密方法(哈希算法,用于校验数据完整性)以及字符串中含有汉字的情况的加密方法

最近在项目中使用到了网络请求签名认证的方法,于是在网上找关于OC sha1加密的方法,很快找到了一个大众使用的封装好的方法,以下代码便是 首先需要添加头文件 #import 然后直接使用下面的方法就...
  • Flying_in_the_world
  • Flying_in_the_world
  • 2016年11月11日 11:57
  • 651

IOS银行卡校验规则(Luhn算法)

一、基础知识 银行卡校验规则(Luhn算法) Luhn检验数字算法 (Luhn Check Digit Algorithm),也叫做模数10公式,是一种简单的算法,用于验证银行卡、信用卡号码的有效...
  • defeny
  • defeny
  • 2016年08月28日 18:42
  • 1509

字符串验证工具类

验证工具类 /** * 验证模块,包括输入输出的验证 */ public class Validator { /** * 判断用户输入的时间格式是否正确 */ ...
  • pengkv
  • pengkv
  • 2015年04月13日 11:30
  • 1070
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发中常用字符串验证处理操作
举报原因:
原因补充:

(最多只允许输入30个字)