美文网首页
oc输入8-16位数字和字符

oc输入8-16位数字和字符

作者: 虫yu | 来源:发表于2020-04-10 11:46 被阅读0次
#define kAlphaNum @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

// 判断长度大于8位后再接着判断是否同时包含数字和字符
+ (BOOL)hasNumAndLetter:(NSString *)string {
    
    BOOL result = false;
    if ([string length] >= 8 && [string length] <= 16){
        // 判断长度大于8位后再接着判断是否同时包含数字和字符
        NSString * regex = @"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
        result = [pred evaluateWithObject:string];
    }
    return result;
}

// 判断是否可以输入
+ (BOOL)canInputText:(NSString *)text string:(NSString *)string {
    NSCharacterSet *cs;
    cs = [[NSCharacterSet characterSetWithCharactersInString:kAlphaNum] invertedSet];
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; //按cs分离出数组,数组按@""分离出字符串
    BOOL canChange = [string isEqualToString:filtered];
    if(text.length <= 16) {
        return canChange;
    }
    return  NO;
}

使用:

1.限制只能输入数字和字符

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
  // 限制只能输入数字和字符
    if ([self.passworld isEqual:textField]) {
         return  [NSString canInputText:textField.text string:string];
    }
   return  YES;
}

2.必须输入数字+字母

    if (self.passworld.text.length<8 ||self.passworld.text.length >16) {
        [SVProgressHUD showErrorWithStatus:@"密码长度限制为8-16位"];
        return;
    }
    
    if (![NSString hasNumAndLetter:self.passworld.text]) {
        [SVProgressHUD showErrorWithStatus:@"请输入8-16位数字+字母组合"];
        return;
    }

相关文章

  • oc输入8-16位数字和字符

    使用: 1.限制只能输入数字和字符 2.必须输入数字+字母

  • 正则表达式

    验证密码强度 必须同时包含大小写字母、数字、特殊字符、8-16位。 方法一:var reg=/^(?=.*[a-z...

  • 2019-01-17

    JS常用正则表达式和JS控制输入框输入限制(数字|汉字|字符) 验证数字:^[0-9]*$ 验证n位的数字:^\d...

  • Flutter正则大全

    TextInputFormatter篇 忽略特殊字符 只能输入数字和小写字母 只能输入数字和字母 只能输入数字 长...

  • 必须有数字和字母组合的密码正则表达式

    要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在8-16位之间。 ^(?![0-9]+)[0-9A-Z...

  • flutter-正则

    一:TextInputFormatter篇 (1)忽略特殊字符 (2)只能输入数字和小写字母 (3)只能输入数字和...

  • java中常用的正则

    记录一 需求: 密码长度8-16位,必须包含数字、大小写字母、特殊字符中的三种 正则: 代码 注意复制后,粘贴到I...

  • 输入框不满足正则不让输入

    需求:1、输入值保留两位小数2、最大输入8位数并且保留两位小数3、不允许输入非数字字符

  • 常用密码强度正则表达式

    需求:密码至少8个字符,包括1个大写字母,1个小写字母和1个数字或特殊字符,例如#,?,! 方案一 至少8-16个...

  • 正则

    转载今天在项目中需要用到判断用户输入的用户名长度为8-16位且同时包含数字和字母,在网上搜了一下正则表达式的用法,...

网友评论

      本文标题:oc输入8-16位数字和字符

      本文链接:https://www.haomeiwen.com/subject/vmalmhtx.html