银行卡4位分割ios - CSDN
  • #pragma ...实现输入位数出现一个空格 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {     NSString *text

    #pragma UITextFieldDelegate实现输入位数出现一个空格

    -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {    

        NSString *text = [textField text];

        NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];

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

        if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {

           return NO;

        }

        text = [text stringByReplacingCharactersInRange:range withString:string];

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

        if ([text length] >= 21) {

           return NO;

        }


       NSString *newString =@"";

       while (text.length >0) {

           NSString *subString = [textsubstringToIndex:MIN(text.length,4)];

            newString = [newString stringByAppendingString:subString];

           if (subString.length ==4) {

                newString = [newString stringByAppendingString:@" "];

            }

            text = [text substringFromIndex:MIN(text.length,4)];

        }    

        newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];

        [textFieldsetText:newString];

        return NO;

    }

    展开全文
  • 输入框显示银行卡格式,即为每隔4位出现一个空格, 下面使用UITextFieldDelegate,编码实现: 首先引用使用代理类名 ()<UITextFieldDelegate>self.textField.delegate = self;使用代理方法- (BOOL)textField:...

    输入框显示银行卡格式,即为每隔4位出现一个空格,
    下面使用UITextFieldDelegate,编码实现:
    首先引用使用代理

    类名 ()<UITextFieldDelegate>
    self.textField.delegate = self;

    使用代理方法

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        if (textField == self.contentTextField) {
            // 4位分隔银行卡卡号
            NSString *text = [textField text];
    
            NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];
            string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
            if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {
                return NO;
            }
    
            text = [text stringByReplacingCharactersInRange:range withString:string];
            text = [text stringByReplacingOccurrencesOfString:@" " withString:@""];
            NSLog(@"%@",text);
    //        text为输入框内的文本,没有“ ”的内容
    
            NSString *newString = @"";
            while (text.length > 0) {
                NSString *subString = [text substringToIndex:MIN(text.length, 4)];
                newString = [newString stringByAppendingString:subString];
                if (subString.length == 4) {
                    newString = [newString stringByAppendingString:@" "];
                }
                text = [text substringFromIndex:MIN(text.length, 4)];
            }
    
            newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];
    
            if ([newString stringByReplacingOccurrencesOfString:@" " withString:@""].length >= 21) {
                return NO;
            }
    
            [textField setText:newString];
    
            return NO;
        }
        return YES;
    }

    使用以上方法即可实现UITextField 显示银行卡格式。

    希望可以帮助大家
    如果哪里有什么不对或者不足的地方,还望读者多多提意见或建议
    iOS技术交流群:668562416

    展开全文
  • &lt;?php $str = "2081180100100000072"; ... $str = preg_replace('/(\d{4})(?=\d)/', '$1 ', $str); echo "&lt;br&gt;"; echo $str; ?&gt;  
    <?php
         $str = "2081180100100000072";
         
         $str = preg_replace('/(\d{4})(?=\d)/', '$1 ', $str);
         echo "<br>";
         echo $str;
         
    ?>
    

     

    展开全文
  • //昵称 + (BOOL) validateNickname:(NSString *)nickname; //姓名一般只允许包含中文或英文字母 + (BOOL)isValidateName:(NSString *)name; ...+ (BOOL) validateUserName:(NSString *)name;...+ (BOOL) va

    //昵称

    + (BOOL) validateNickname:(NSString *)nickname;

    //姓名一般只允许包含中文或英文字母

    + (BOOL)isValidateName:(NSString *)name;

    //用户名

    + (BOOL) validateUserName:(NSString *)name;

    //密码

    + (BOOL) validatePassword:(NSString *)passWord;

    //手机号码验证

    + (BOOL) validateMobile:(NSString *)mobile;

    //邮箱

    + (BOOL) validateEmail:(NSString *)email;

    //电话验证

    + (BOOL) validateTel:(NSString *)tel;

    //数字

    + (BOOL) validateNumber:(NSString *)number;

    // 身份证验证

    + (BOOL)validateIDCardNumber:(NSString *)value;

    //是否银行卡号


    #import "DataVerify.h"


    @implementation DataVerify


    //昵称(账号)

    + (BOOL) validateNickname:(NSString *)nickname

    {

    //    NSString *nicknameRegex = @"^[\u4e00-\u9fa5A-Za-z0-9]{4,16}$";

        NSString *nicknameRegex = @"^[a-zA-Z0-9]{3,16}$";

        NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex];

        return [passWordPredicate evaluateWithObject:nickname];

    }


    //姓名一般只允许包含中文或英文字母

    + (BOOL)isValidateName:(NSString *)name

    {

        NSString *nameRegex = @"^[\u4E00-\u9FA5A-Za-z]{2,16}";

        NSPredicate *namePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nameRegex];

        

        return [namePredicate evaluateWithObject:name];

    }


    /*

    ////2-6位,只含有汉字

    + (BOOL)validateUserName:(NSString *)name {

        NSString *nameRegex = @"^[\u4E00-\u9FA5]{2,6}$";

        

        NSPredicate *namePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nameRegex];

        

        return [namePredicate evaluateWithObject:name];

    }

    */


    //用户名

    + (BOOL) validateUserName:(NSString *)name

    {

        NSString *userNameRegex = @"^[A-Za-z0-9]{4,16}+$";

        NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",userNameRegex];

        BOOL B = [userNamePredicate evaluateWithObject:name];

        return B;

    }


    //密码

    + (BOOL) validatePassword:(NSString *)passWord

    {

        NSString *passWordRegex = @"^[a-zA-Z0-9]{6,16}+$";

        //只能输入数字和字母组合

    //    NSString *passWordRegex = @"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$";

        //NSString *passWordRegex = @"^[A-Za-z0-9]{6,20}$";

        NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex];

        return [passWordPredicate evaluateWithObject:passWord];

        

    }


    //手机号码验证

    + (BOOL) validateMobile:(NSString *)mobile

    {

        //手机号以1314(57), 17(0678), 1518开头,八个 \d 数字字符

        NSString *phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(17[0678])|(14[57])|(18[0,0-9]))\\d{8}$";

        NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];

        return [phoneTest evaluateWithObject:mobile];

    }


    //邮箱

    + (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];

    }


    //验证电话号码 不带分隔符  02896331586

    + (BOOL) validateTel:(NSString *)tel

    {

        /**

         * 大陆地区固话及小灵通

         * 区号:010,020,021,022,023,024,025,027,028,029

         * 号码:七位或八位

         */

        NSString *phoneRegex =@"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";

        NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];

        return [phoneTest evaluateWithObject:tel];

    }


    //只输入数字

    + (BOOL) validateNumber:(NSString *)number {

      

        NSString *numberRegex = @"^[0-9]*$";

        NSPredicate *numberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", numberRegex];

        return [numberTest evaluateWithObject:number];

    }


    // 身份证验证

    + (BOOL)validateIDCardNumber:(NSString *)value

    {

        value = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

        

        int length = 0;

        

        if (!value) {

            return NO;

        }

        else {

            length = (int)value.length;

            

            if (length !=15 && length !=18) {

                return NO;

            }

        }

        // 省份代码

        NSArray *areasArray =@[@"11",@"12",@"13",@"14",@"15",@"21",@"22",@"23",@"31",@"32",@"33",@"34",@"35",@"36",@"37",@"41",@"42",@"43",@"44",@"45",@"46",@"50",@"51",@"52",@"53",@"54",@"61",@"62",@"63",@"64",@"65",@"71",@"81",@"82",@"91"];

        

        NSString *valueStart2 = [value substringToIndex:2];

        

        BOOL areaFlag =NO;

        

        for (NSString *areaCodein areasArray) {

            

            if ([areaCode isEqualToString:valueStart2]) {

                areaFlag =YES;

                break;

            }

        }

        

        if (!areaFlag) {

            return NO;

        }

        

        NSRegularExpression *regularExpression;

        NSUInteger numberofMatch;

        int year =0;

        switch (length) {

            case 15:{

                year = [value substringWithRange:NSMakeRange(6,2)].intValue +1900;

                if (year %4 ==0 || (year %100 ==0 && year %4 ==0)) {

                    regularExpression = [[NSRegularExpressionalloc]initWithPattern:@"^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$"

                                                                            options:NSRegularExpressionCaseInsensitive

                                                                              error:nil];//测试出生日期的合法性

                }else {

                    regularExpression = [[NSRegularExpressionalloc]initWithPattern:@"^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$"

                                                                            options:NSRegularExpressionCaseInsensitive

                                                                              error:nil];//测试出生日期的合法性

                }

                numberofMatch = [regularExpression numberOfMatchesInString:value

                                                                   options:NSMatchingReportProgress

                                                                     range:NSMakeRange(0, value.length)];

                

                if(numberofMatch >0) {

                    return YES;

                }else {

                    return NO;

                }

            }

            case 18:

                year = [value substringWithRange:NSMakeRange(6,4)].intValue;

                if (year %4 ==0 || (year %100 ==0 && year %4 ==0)) {

                    regularExpression = [[NSRegularExpressionalloc]initWithPattern:@"^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$"

                                                                            options:NSRegularExpressionCaseInsensitive

                                                                              error:nil];//测试出生日期的合法性

                }else {

                    regularExpression = [[NSRegularExpressionalloc]initWithPattern:@"^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$"

                                                                            options:NSRegularExpressionCaseInsensitive

                                                                              error:nil];//测试出生日期的合法性

                }

                numberofMatch = [regularExpression numberOfMatchesInString:value

                                                                   options:NSMatchingReportProgress

                                                                     range:NSMakeRange(0, value.length)];

                

                if(numberofMatch >0) {

                    

                    int S = ([valuesubstringWithRange:NSMakeRange(0,1)].intValue + [value substringWithRange:NSMakeRange(10,1)].intValue) *7 + ([valuesubstringWithRange:NSMakeRange(1,1)].intValue + [value substringWithRange:NSMakeRange(11,1)].intValue) *9 + ([valuesubstringWithRange:NSMakeRange(2,1)].intValue + [value substringWithRange:NSMakeRange(12,1)].intValue) *10 + ([valuesubstringWithRange:NSMakeRange(3,1)].intValue + [value substringWithRange:NSMakeRange(13,1)].intValue) *5 + ([valuesubstringWithRange:NSMakeRange(4,1)].intValue + [value substringWithRange:NSMakeRange(14,1)].intValue) *8 + ([valuesubstringWithRange:NSMakeRange(5,1)].intValue + [value substringWithRange:NSMakeRange(15,1)].intValue) *4 + ([valuesubstringWithRange:NSMakeRange(6,1)].intValue + [value substringWithRange:NSMakeRange(16,1)].intValue) *2 + [valuesubstringWithRange:NSMakeRange(7,1)].intValue *1 + [valuesubstringWithRange:NSMakeRange(8,1)].intValue *6 + [valuesubstringWithRange:NSMakeRange(9,1)].intValue *3;

                    

                    int Y = S %11;

                    

                    NSString *M =@"F";

                    

                    NSString *JYM =@"10X98765432";

                    

                    M = [JYM substringWithRange:NSMakeRange(Y,1)];//判断校验位

                    

                    if ([MisEqualToString:[value substringWithRange:NSMakeRange(17,1)]]) {

                        return YES;// 检测ID的校验位

                    }else {

                        return NO;

                    }

                }else {

                    

                    return NO;

                }

            default:

                return NO;

        }

    }


    //判断是否银行卡

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

        int oddsum = 0;    //奇数求和

        int evensum = 0;    //偶数求和

        int allsum = 0;

        int cardNoLength = (int)[cardNolength];

        int lastNum = [[cardNo substringFromIndex:cardNoLength-1] intValue];

        

        cardNo = [cardNo substringToIndex:cardNoLength -1];

        for (int i = cardNoLength -1 ; i>=1;i--) {

            NSString *tmpString = [cardNo substringWithRange:NSMakeRange(i-1,1)];

            int tmpVal = [tmpString intValue];

            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;

    }

    @end



    + (BOOL) checkCardNo:(NSString*) cardNo;


    展开全文
  • 需求 手机号号码 15288888888 ------->152 8888 8888 银行卡号 8888888888888888888 ----->8888 8888 8888 8888 888 实现 在UITextFiled输入时候就实现号码格式化 在UITextField代理方法 ...
  • - (void)textFieldDidChange:(UITextField *)textField { NSInteger textLength = textField.text.length; NSString *text = [textField text]; text = [text stringByReplacingOccurrencesOfString:@...
  • 输入银行卡号时每隔4位添加一个空格
  • 因为银行卡号输入域有做处理,每四位分隔,导致整个银行卡号作为一个字符串做输入时输入的内容会被分隔错乱。android采用pressKeyCode的方式处理,iOS暂未遇到错乱的情况。解决办法:把字母、数字键值及对应的...
  • IOS应用接iOS聚合支付(SDK接口说明)
  • 这是一个比较简单的功能需求,给UITextField添加了一个分割间隙,就是输入银行卡号时,每4位数一组,便于区分,使用非常简单,也非常轻量级,就一个类。话不多少,直接上代码!!! 使用方法 //1,先导入头文件 #...
  • 银行卡编辑框格式化输入,4位分隔
  • 非常感谢大家利用自己宝贵的时间来阅读我的文章 , 今天给大家带来的是一个自定义的弹出输入框,支持自定义标题、各控件颜色、自动添加分隔符、字数限制等功能。并添加了pods导入支持,如果需要的话希望能帮到你 , ...
  • 输入框,输入时自动分隔字符,逻辑均在自定义视图中处理了。...适用于:电话号码、银行卡号、身份证号、订单号等信息的输入。 使用时如果有任何问题,可以在https://github.com/Coolll/SeparateTextField提Issue。
  • ios】表单验证工具

    2018-12-04 15:06:18
    新建一个NSObject类,起一个工具类的名字,我的是QCTools ... 判断是否为银行卡号 按指定分隔符拆分字符串 按指定分隔符拼接字符串 .h文件中定义类方法: /* 判断字符串是否为空  */ +(BOOL) isBlankS...
  • //昵称(账号)+ (BOOL) validateNickname:(NSString *)nickname { // NSString *nicknameRegex = @"^[\u4e00-\u9fa5A-Za-z0-9]{4,16}$"; NSString *nicknameRegex = @"^[a-zA-Z0-9]{3,16}$"; NSPredicate *pass
  • 用原生 iOS 的人分两种,懂 URL Schemes 的和不懂的。 前者是「魔法师」,后者是「麻瓜」。 URL Schemes 应用在 iOS 上已经很久了。对于使用者来说,在沙盒机制下的 iOS 中,如果想做到一定程度上的自动化就不可...
  • 继承EditText封装了一个多项功能的XEditText,具体非常实用的...支持自定义分割符号和分割模板,如分割银行卡号:6000-0000-0000-0000-000; 支持禁止Emoji表情符号输入; drawableRight自定义,点击监听,配合PopupWi
  • iOS面试题2017

    2017-05-22 17:51:17
    iOS面试小贴士 ———————————————回答好下面的足够了------------------------------------- 多线程、特别是NSOperation 和 GCD 的内部原理。 运行时机制的原理和运用场景。 SDWebImage的...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
1 2 3 4 5 ... 15
收藏数 298
精华内容 119
热门标签
关键字:

银行卡4位分割ios