千分位&手机号验证&身份证号验证

Posted iOS的美丽岁月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了千分位&手机号验证&身份证号验证相关的知识,希望对你有一定的参考价值。

前言:
        App开发者注意了,你还在为了验证一个手机号发愁吗?你还在为验证一个身份证号发愁吗?你还在为给一个数字添加千分位发愁吗?那你就OUT了。福利满满的来了,你只要下载【DigitManager】文件,你就可以拥有对数字处理的功能。有效提高你的开发效率。

1、在App开发的过程中,数据中数字的出现往往都占据重要的角色。例如:一些理财App 数值的千分位的添加至关重要;一些机关、银行的App 在身份验证等。还有一个普遍的模块,那就是获取用户的手机号。

2、呼朋唤友

  群的特点:

  1、ios 开发交流群,每周都有更新新的内容。

  2、群里有3~5年的资深开发者。

  3、群员在App开发过程中遇到什么问题,可以在群里提问。

  4、群员在App开发中,如果遇到难实现的功能或者模块,可以在群里提出,有人员帮助你实现。

  5、加入群后,可以get到App 开发中的一些小功能模块。

  群号是:185341804   群名字:成功QQ吧

  群主号:1542100658 (qq)

3、代码区域

   1》千分位

   

/**

 添加千分位


 @param numberString  要添加的数字串

 @return  添加后的数字串

 */

+(NSString*)addDigThousands:(NSString*)numberString;

#pragma mark  ---- addDigThousands

+(NSString*)addDigThousands:(NSString*)numberString

    if (numberString==nil||numberString.length==0) return @"0.00" ;

    /**

     判断系统的大小

     */

    unsigned short systemVerson = [UIDevice currentDevice].systemVersion.intValue;

    /**

     判断是否含有小数点

     */

    BOOL isDecimalPoint = NO;

    if (systemVerson>=8)

        isDecimalPoint = [numberString containsString:@"."];

    else

        isDecimalPoint = [numberString componentsSeparatedByString:@"."].count>=2?YES:NO;

   

    NSArray * array = [NSArray array];

    if (isDecimalPoint)

        array = [numberString componentsSeparatedByString:@"."];

        numberString =array.firstObject;

   

    /**

     转化成可变的字符串

     */

    NSMutableString * string = [NSMutableString stringWithString:numberString];

    /**

     获取整数部位的长度

     */

    NSInteger length = string.length;

    /**

     获取最终的长度

     */

    NSInteger KMlength = 0;

    if (length%3==0)

        KMlength = length;

    else

        /**

         计算要补充的数值

         */

        KMlength = length +(3- length%3);

        for (unsigned i =0; i<(3-length%3); i++)

            [string insertString:@"0" atIndex:0];

       

   

    /**

     插入千分位

     */

    NSMutableString * returnString = [NSMutableString stringWithCapacity:0];

    for (unsigned i = 1; i<=KMlength; i++)

        if (i%3==0)

            NSString * appendString = nil;

            appendString = [string substringWithRange:NSMakeRange(i-3, 3)];

            if (i==KMlength)

                [returnString  appendString:[NSString stringWithFormat:@"%@",appendString]];

            else

                [returnString  appendString:[NSString stringWithFormat:@"%@,",appendString]];

           

       

   

    /**

     获取数值的有效位

     */

    if (length%3!=0)

        returnString = (NSMutableString*)[returnString substringFromIndex:(3-length%3)];

   

    /**

     拼接小数部位

     */

    if (isDecimalPoint)

        returnString = (NSMutableString*)[returnString stringByAppendingString:[NSString stringWithFormat:@".%@",array[1]]];

   

    return returnString;


  2》检测是否全是数字     

/**

 检测是否全部是数字


 @param numberString 要检测的数字串

 @return YES|NO

 */

+(BOOL)inspectDigit:(NSString*)numberString;

#pragma mark  ---- inspectDigit

+(BOOL)inspectDigit:(NSString*)numberString

    /**

     判断是否存在

     */

    if (numberString.length==0||numberString==nil) return NO;

    /**

     创建字符串扫描对象

     */

    NSScanner* scan = [NSScanner scannerWithString:numberString];

    int val;

    return[scan scanInt:&val] && [scan isAtEnd];

  3》手机号的验证

/**

 检查手机号


 @param numberString 要检查的手机号串

 @return YES|NO

 */

+(BOOL)inspectCellphoneNumber:(NSString*)numberString;

#pragma mark  ---- inspectCellphoneNumber

+(BOOL)inspectCellphoneNumber:(NSString*)numberString

    /**

     判断传入的参数是否存在

     */

    if (numberString.length==0||numberString==nil) return NO;

    /**

     清楚冗余的部分

     */

    numberString = [numberString stringByReplacingOccurrencesOfString:@"-" withString:@""];

    if (numberString.length==11)

        /**

         创建标志

         */

        BOOL CMCC,CUCC,CTCC;

        /**

         * 移动号段正则表达式

         */

        NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\\\d8|(1705)\\\\d7$";

        /**

         * 联通号段正则表达式

         */

        NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\\\d8|(1709)\\\\d7$";

        /**

         * 电信号段正则表达式

         */

        NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\\\d8$";

        NSPredicate *predCMCC = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];

        CMCC = [predCMCC evaluateWithObject:numberString];

        NSPredicate *predCUCC = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];

        CUCC = [predCUCC evaluateWithObject:numberString];

        NSPredicate *predCTCC = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];

        CTCC = [predCTCC evaluateWithObject:numberString];

        if (CMCC || CUCC || CTCC)

            return YES;

       

   

    return NO;

 4》身份证号

/**

 检测身份证


 @param numberString 要检测的身份证号

 @return YES|NO

 */

+(BOOL)inspectID:(NSString*)numberString;


#pragma mark  ---- inspectID

+(BOOL)inspectID:(NSString*)numberString

    /**

     判断是否存在

     */

    if (numberString==nil||numberString.length==0) return NO;

    /**

     去除空格

     */

    numberString = [numberString stringByReplacingOccurrencesOfString:@" " withString:@""];

    /**

     校验身份证的位数

     */

    if (numberString.length==18)

        /**

         求和身份证前17位的和

         */

        NSString * Front17String = [numberString substringToIndex:numberString.length-1];

        /**

         加权因子

         */

        NSArray * factorArray = @[@7,@9,@10,@5,@8,@4,@2,@1,@6,@3,@7,@9,@10,@5,@8,@4,@2];

        /**

         求和

         */

        int sum = 0;

        for (unsigned i =0; i<Front17String.length; i++)

            const char value = [Front17String characterAtIndex:i];

            sum = sum + atoi(&value) * [factorArray[i] intValue];

       

        ushort remainderValue = sum % 11;

        /**

         余数参考表

         */

        NSArray * remainderArray = @[@"1",@"0",@"X",@"9",@"8",@"7",@"6",@"5",@"4",@"3",@"2"];

        /**

         获取身份证最后一位

         */

        NSString * lastIDString = [numberString substringFromIndex:17];

        /**

         获取余数查询到的最后一位

         */

        NSString * remadinderQueryString = [remainderArray objectAtIndex:remainderValue];

        if ([lastIDString isEqualToString:remadinderQueryString])

            return YES;

       

   

    return NO;

4、代码下载
https://pan.baidu.com/s/1cxRUOI





以上是关于千分位&手机号验证&身份证号验证的主要内容,如果未能解决你的问题,请参考以下文章

js中验证身份证号码是否正确支持15位和18位身份证号

js中验证身份证号码是否正确支持15位和18位身份证号

Android 正则表达式验证手机号姓名(包含少数民族)身份证号

验证身份证号规则(验证身份证号是否正确)

[前端] jquery验证手机号身份证号中文名称

Laravel 中自定义 手机号和身份证号验证