7 iphone cocoa-touch objective-c nsstring uitextfield
我有一个带有3个UITextFields(用户名,电子邮件和密码)的视图控制器.
我需要一个首先检查的方法,如果所有字段都包含文本,那么检查电子邮件的文本字段是否是有效的电子邮件,也许通过检查它是否有@符号.有人能帮忙吗?
以下代码用于使用Regex(常规表达)检查电子邮件ID的验证.
(BOOL) validateEmail: (NSString *) candidate {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; // return 0;
return [emailTest evaluateWithObject:candidate];
}
Run Code Online (Sandbox Code Playgroud)
这将检查UITextField是否有正确的电子邮件。
将此方法添加到textFields 委托中,然后检查是否应添加要更改的字符。
返回YES或NO根据文本字段将当前文本与有效的电子邮件地址进行比较:
#define ALPHA @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
#define NUMERIC @"1234567890"
#define ALPHA_NUMERIC ALPHA NUMERIC
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet *unacceptedInput = nil;
if ([[textField.text componentsSeparatedByString:@"@"] count] > 1) {
unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".-"]] invertedSet];
} else {
unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".!#$%&'*+-/=?^_`{|}~@"]] invertedSet];
}
return ([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] <= 1);
}
Run Code Online (Sandbox Code Playgroud)
要检查文本字段是否为空或仅if (myTextField.text.length > 0) {}在视图控制器中的任何地方使用。
我使用了Mimit的解决方案,但修改了emailRegex以允许更长的名称,如博物馆.所以最后的大括号现在说{2,6}不是{2,4}.我用更长的名字测试它,它的工作原理.感谢Mimit提供简单的解决方案.
-(BOOL) validateEmail: (NSString *) candidate {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; // return 0;
return [emailTest evaluateWithObject:candidate];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11055 次 |
| 最近记录: |