项目中注册页面要用到正则表达式验证,在网上查了下,有的是实现不了功能的。现在解决了这个问题,总结下,与大家分享。
正则表达式的代码如下:
//利用正则表达式验证邮箱的合法性 +(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
程序运行截图如下: