iOS中的电子邮件地址的正则表达式验证并检查空白条目

时间:2012-06-17 16:07:25

标签: objective-c regex cocoa-touch

  

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

我可以使用什么样的正则表达式语法在iOS中为我的UITextField.text值进行电子邮件验证?我有办法检查其他UITextFieldUITextView是否遗失了吗?

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

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

3 个答案:

答案 0 :(得分:2)

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

这种结构可以做到这一点,并且比使用isEqualToString:导致更少的输入,但这主要是个人偏好的问题:

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

}

对Objective-C运行时有更深入了解的人可能会指出对nil的测试是多余的,因为向nil发送消息总是会产生nil(或0),所以{如果content.text.length为{1}},则为{1}}。此外,如果您的周围环境中装有硬核C编码器,他们可以类似地指出在if语句中测试0是针对懦夫的。

因此,输入可以减少到以下内容,代价是代码清晰:

content.text

至于测试电子邮件地址的正则表达式,有一个很好的讨论here,Cocoa中的正则表达式可以像这样完成:

if ( !content.text.length ) {

}

答案 1 :(得分:2)

因此,对于第一部分(电子邮件验证),我会这样做:

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,否则你可以导航视图层次结构找到它们然后做检查,你跟着吗?

答案 2 :(得分:-4)

只需设置

即可
[textField setKeyboardType:UIKeyboardTypeEmailAddress];

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