iphone - iOS 文本字段验证

标签 iphone objective-c ios

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

是否有任何库不能使我不必编写正则表达式来简化此操作。

最佳答案

这将检查 UITextField 是否包含 10 位或更少的正确电子邮件和电话号码。
将此方法添加到 textFields delegate 中,然后检查是否应添加即将更改的字符。
返回 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);
}  

另外,看看这两篇文章:
Auto-formatting phone number UITextField on the iPhone
PhoneNumberFormatter .

关于iphone - iOS 文本字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7665323/

相关文章:

ios 检查 UITextfield.text 的数值是否大于 52

ios - GKLocalPlayer 身份验证不起作用,但 isAuthenticated 返回 YES(Game Center 沙箱)

ios - 我需要为 iPad 应用程序添加 @2x 和 @3x 图像吗?

javascript - iPad preventDefault action only on first link click

ios - NSNotificationCenter-未调用观察者选择器

ios - Segue 标识符错误

objective-c - UITextView 未显示在生成的 PDF 上

ios - 无法在 NSURLConnection 函数之外访问字典的内容

iphone - iPhone (Xcode) 项目的 .gitignore 的 'standard' 内容是什么?

ios - 登录后如何在 swift 4 中使用主视图 Controller 设置侧菜单