现在的位置: 首页 > 综合 > 正文

iOS正则表达式验证

2018年01月23日 ⁄ 综合 ⁄ 共 2317字 ⁄ 字号 评论关闭

    项目中注册页面要用到正则表达式验证,在网上查了下,有的是实现不了功能的。现在解决了这个问题,总结下,与大家分享。

    正则表达式的代码如下:

//利用正则表达式验证邮箱的合法性
+(BOOL)isValidEmail:(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)isValidPassword:(NSString *)password {
    //密码要求6-20位,以0~9、a~z、A~Z组合
    NSString *passwordRegex = @"^[A-Za-z0-9]{6,20}+$";
    NSPredicate *passwordTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", passwordRegex];
    return [passwordTest evaluateWithObject:password];
}

//利用正则表达式验证手机号码的合法性
+ (BOOL) isvalidPhoneNumber:(NSString *)mobile
{
    //手机号以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];
}

    上面代码是MyRegularExpressionsValidate.m的实现代码。

    在ViewController.m中进行MyRegularExpressionsValidate.m的正则表达式调用,代码如下:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
	//设置textField的tag值
    self.emailTextField.tag = Tag_emailTextField;
    self.passwordTextField.tag = Tag_passwordTextField;
    self.phoneNumberTextField.tag = Tag_phoneNumberTextField;
    
    //viewController实现了UITextFieldDelegate,我们需要将RegisterViewController分配给textfield的delegate属性
    self.emailTextField.delegate = self;
    self.passwordTextField.delegate = self;
    self.phoneNumberTextField.delegate = self;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - UITextFieldDelegate Method
- (void)textFieldDidEndEditing:(UITextField *)textField{
    switch (textField.tag) {
        case Tag_emailTextField:
            if ([MyRegularExpressionsValidate isValidEmail:self.emailTextField.text]) {
                NSLog(@"✅邮箱验证正确");
            }
            else{
                NSLog(@"❌邮箱验证错误");
            }
            break;
            
        case Tag_passwordTextField:
            //密码要求6-20位,以0~9、a~z、A~Z组合
            if ([MyRegularExpressionsValidate isValidPassword:self.passwordTextField.text]) { 
                NSLog(@"✅密码验证正确");
            }
            else{
                NSLog(@"❌密码验证错误");
            }
            break;
            
        case Tag_phoneNumberTextField:
            if ([MyRegularExpressionsValidate isvalidPhoneNumber:self.phoneNumberTextField.text]) {
                NSLog(@"✅手机号验证正确");
            }
            else{
                NSLog(@"❌手机号验证错误");
            }
            break;
            
        default:
            break;
    }
}

@end

    程序运行截图如下:

    项目源码:http://download.csdn.net/detail/little_virus/7999345

    相关参考:http://www.2cto.com/kf/201311/256494.html

抱歉!评论已关闭.