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;
}
注释:银行卡,身份证,邮箱校验,和手机号校验方法相似,在对应的地方调用对应的类方法即可校验,屡试屡爽。
文件
/**
限制手机号输入格式
*/
+ (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;
}
注释:银行卡,身份证,邮箱校验,和手机号校验方法相似,在对应的地方调用对应的类方法即可校验,屡试屡爽。
相关文章推荐
- ios设置textField只能输入数字用于电话号码
- html正则表达式验证标签只能输入数字,英文。电话号码格式……
- android 用户注册或登录时判断输入的是否是正确格式的电话号码
- 怎么限制input的text里输入的值只能是数字(正则、js)
- 设置键盘只能输入数字( phoneNumTextField.keyboardType = UIKeyboardTypeNumberPad;)
- 限制textfield只能输入数字
- textField中只能输入数字
- android 利用正则表达式 控制edittext只能输入数字、英文、汉字
- 利用JFormattedTextField创建一个只能输入数字的文本框
- XZ_iOS之实现textField限制只能输入数字,无论是第三方键盘还是自带键盘
- iOS TextField输入限制(限制长度、只能输入数字,只能输入数字字母……)
- 判断用户输入的数字是一个合法的电话号码的正则表达式
- Java用正则表达式判断输入的电话号码格式是否正确
- EditText自定义输入数据格式,比如只能是数字和字母(身份证最后一位X)
- iOS开发中如何设置textfield输入长度并且仅仅只能输入数字
- android使用正则表达式控制EditText只能输入数字和英文
- iOS开发判断TextField中输入的数字为小数点后两位
- 限制textfield动态只能输入数字和字母且有长度限制
- angularjs 正则判断用户输入的内容只能是数字或者字母
- iOS中TextField只能输入数字且小数点后最多输入两位