【问题标题】:regex validation for email address in iOS and check for blank entry [duplicate]iOS中电子邮件地址的正则表达式验证并检查空白条目[重复]
【发布时间】:2012-06-19 19:53:47
【问题描述】:

可能重复:
Check that an email address is valid on iOS

对于我的UITextField.text 值,我可以在 iOS 中使用什么正则表达式语法来验证电子邮件?有没有办法让我检查是否缺少其他 UITextFieldUITextView

我可以用它来测试空白值吗:

if(content.text == nil){
    //do something
}
else{
    //proceed with next course of action
}

【问题讨论】:

标签: objective-c regex cocoa-touch


【解决方案1】:

为了绝对确定您已经测试了一个空值,您还应该测试一个空字符串。

这种结构可以做到这一点,并且比使用isEqualToString: 更少打字,但这主要是个人喜好问题:

if ( content.text == nil || content.text.length == 0 ) {

}

对 Objective-C 运行时有更深入了解的人可能会指出,对 nil 进行测试是多余的,因为向 nil 发送消息总是会产生 nil(或 0),所以 content.text.length 是 nil如果content.text 是。此外,如果您的周围充满了核心 C 编码人员,他们可能会同样指出,在 if 语句中测试 0 是针对懦夫的。

因此,键入可以减少到以下内容,但代价是您的代码更加清晰:

if ( !content.text.length ) {

}

关于测试邮箱地址的正则表达式,有一个很好的讨论here,Cocoa中的正则表达式可以这样做:

NSPredicate *regexPred = [NSPredicate predicateWithFormat: @"self matches[cd] '<email regex here>'"];
BOOL match = [regexPred evaluateWithObject: content.text];

【讨论】:

  • 我知道 regex fer email 但在 iOS 的 Objective-c 中使用它的语法如何?
【解决方案2】:

简单设置

[textField setKeyboardType:UIKeyboardTypeEmailAddress];

您将避免尝试正确进行电子邮件验证的痛苦。

【讨论】:

  • 外接键盘...?复制和粘贴...?
  • 你知道我什至没有考虑到这实际上并没有对输入执行任何验证。道歉。
【解决方案3】:

所以对于第一部分(电子邮件验证),这是我要做的:

if (content.text == nil //check if its nil (i dont think this is actually possible but who knows
    || content.text.length == 0 //check for the length to have some sort of magnitude
    || [content rangeOfString:@"@"].location == NSNotFound) { //check if its an email they put in
//do your error stuff
}

现在要检查其他文本字段/文本视图,您需要显示更多代码。很有可能,但这取决于您如何实现该类。如果您将它们作为 ivars,您可以直接对 ivars 进行检查,否则您可以导航视图层次结构以找到它们然后进行检查,您会遵循吗?

【讨论】:

    猜你喜欢
    • 2016-11-15
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多