您的位置:首页 > 产品设计 > UI/UE

textfield只能输入数字,(登录、注册电话号码的格式判断)等正则表达

2016-11-07 17:02 495 查看
1.自定义一个类ValidateUtil ----->>>ValidateUtil .h
文件

/**

限制手机号输入格式

*/

+ (BOOL)isMatchPhoneNumberFormat:(UITextField *)textField range:(NSRange)range
string:(NSString *)string;

/**

验证邮箱格式

*/

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

/**

验证身份证号格式

*/

+ (BOOL)validateIdentityCard: (NSString
*)identityCard;

/**

验证银行卡格式

*/

+ (BOOL)validateBankCardNumber:(NSString
*)cardNumber;

2.----->>>ValidateUtil .m 文件

+(BOOL)isMatchPhoneNumberFormat:(UITextField *)textField range:(NSRange)range
string:(NSString *)string{

if ([string
isEqualToString:@"\n"]||[string
isEqualToString:@""]) {//按下return

return
YES;

}

if(![self
validateByRegex:@"[0-9]+"
withObject:string]){

return
NO;

}

if (textField.text.length >=11) {

return
NO;

}

return
YES;
}

//邮箱校验

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

}

//身份证校验

+ (BOOL)validateIdentityCard: (NSString
*)identityCard{ BOOL flag; if
(identityCard.length <=
0) { flag =
NO; return flag;
} NSString *regex2 =
@"^(\\d{14}|\\d{17})(\\d|[xX])$"; NSPredicate
*identityCardPredicate = [NSPredicate
predicateWithFormat:@"SELF MATCHES %@",regex2];
return [identityCardPredicate
evaluateWithObject:identityCard];}

//银行卡校验

+(BOOL)validateBankCardNumber:(NSString
*)cardNumber{ if(![self
validateByRegex:@"^[0-9]*$"
withObject:cardNumber]){ return
NO; } return
YES;}

3.
在使用的类里 textfield代理方法
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string{
if (textField ==
phoneField) {
return [ValidateUtil
isMatchPhoneNumberFormat:textField
range:range string:string];
}
return
YES;
}

4.判断手机号格式 引入头文件----->>ValidateUtil .h
文件

if (![ValidateUtil
validateMobile:phoneNumber]) {

NSLog(@"手机号格式错误");

return;

}

注释:银行卡,身份证,邮箱校验,和手机号校验方法相似,在对应的地方调用对应的类方法即可校验,屡试屡爽。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息