iOS 正则表达式限制UITextField输入内容

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/C_calary/article/details/79726051

前言

用正则表达式进行输入文本的控制是非常方便的,这里记录下如何根据正则表达式限制UITextField文本内容的输入。

代码

// 在UITextField的代理方法中处理
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    if (string.length == 0) return YES;
    //第一个参数,被替换字符串的range,第二个参数,即将键入或者粘贴的string,返回的textfield的新的文本内容
    NSString *checkStr = [textField.text stringByReplacingCharactersInRange:range withString:string];
    //正则表达式
    NSString *regex = @"^[0-9]+$";
    return [self validateStr:checkStr withRegex:regex];
}

// 根据正则表达式校验字符串
- (BOOL)validateStr:(NSString *)string withRegex:(NSString *)regex
{
    NSPredicate *resultStr = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    return [resultStr evaluateWithObject:string];
}

总结

根据输入内容是否符合要求判断能否输入,这样就能达到控制输入内容的要求了,具体的内容怎么限制,要看正则表达式怎么样的了,上述表达式是限制输入的内容必须是数字。

常用正则表达式

// 密码校验
- (BOOL)validatePassword:(NSString *)passWord {
    NSString *passWordRegex = @"^[a-zA-Z0-9]{6,20}+$";
    NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex];
    return [passWordPredicate evaluateWithObject:passWord];
}

// 手机号校验
- (BOOL)validatePhoneNum:(NSString *)phoneNum {
    //手机号以1开头,10个 \d 数字字符
    NSString *phoneRegex = @"^(1)\\d{10}$";
    NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
    return [phoneTest evaluateWithObject:phoneNum];
}

//邮箱
- (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];
}

猜你喜欢

转载自blog.csdn.net/C_calary/article/details/79726051