iOS TextFieldvalidation

我需要一种方法来确保电话号码有10位数而没有其他字符,即() – 并确保电子邮件地址是有效的电子邮件(格式正确)。

是否有任何库不能让我这么容易,所以我不必编写正则表达式。

这将检查UITextField是否有正确的10位数或更少的电子邮件和电话号码。
将此方法添加到textFields 委托,然后检查是否应添加要更改的字符。
返回YESNO具体取决于文本字段,当前包含的字符数以及要添加的字符数:

 #define ALPHA @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" #define NUMERIC @"1234567890" #define ALPHA_NUMERIC ALPHA NUMERIC - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSCharacterSet *unacceptedInput = nil; switch (textField.tag) { // Assuming EMAIL_TextField.tag == 1001 case 1001: if ([[textField.text componentsSeparatedByString:@"@"] count] > 1) unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".-"]] invertedSet]; else unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".!#$%&'*+-/=?^_`{|}~@"]] invertedSet]; break; // Assuming PHONE_textField.tag == 1002 case 1002: if (textField.text.length + string.length > 10) { return NO; } unacceptedInput = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; break; default: unacceptedInput = [[NSCharacterSet illegalCharacterSet] invertedSet]; break; } return ([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] <= 1); } 

另外,看看这两篇文章:
在iPhone上自动格式化电话号码UITextField
PhoneNumberFormatter 。

这是一种确保UIViewController中的phonenumber长度的简单方法,它在视图中有文本字段。

 - (void)valueChanged:(id)sender { if ([[[self phoneNumberField] text] length] > 10) { [[self phoneNumberField] setText:[[[self phoneNumberField] text] substringToIndex:10]]; } } - (void) viewWillAppear:(BOOL)animated { [[self phoneNumberField] addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventEditingChanged]; } 

对于电子邮件,我想你想要在失去焦点时检查正则表达式。

这是UITextFieldvalidation的简单示例,同时在键盘中键入其他未显示的字符

 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //UITextField *tf_phonenumber,*tf_userid; if (textField.text<=10) { char c=*[string UTF8String]; if (tf_phonenumber==textField) //PhoneNumber /Mobile Number { if ((c>='0' && c<='9')||(c==nil)) { return YES; } else return NO; } if (tf_userid==textField) //UserID validation { if ((c>='a' && c<='z')||(c>='A' && c<='Z')||(c==' ')||(c==nil)) { return YES; } else return NO; } return YES; } else{ return NO; } }