objective-c - iOS 中 UITextField 中的密码验证

标签 objective-c validation ios5 passwords uitextfield

我的 iPhone 应用程序中有 1 个 UITextfield 作为密码。

我想通过以下验证来验证此文本字段。

  • 必须至少有 10 个字符
  • 必须至少包含一个小写字母、一个大写字母、一位数字和一个特殊字符
  • 有效的特殊字符是 – @#$%^&+=^.*(?=.{10,})(?=.*d)(?=.*[a-z])(?= .*[A-Z])(?=.*[@#$%^&+=]).*$

如何限制具有上述要求的 UITextField

最佳答案

这就是我要做的。验证应该在用户输入密码结束时进行,而不是在两者之间进行。我不会使用 NSRegularExpression

-(void)textFieldDidEndEditing:(UITextField *)textField{
   int numberofCharacters = 0;
   BOOL lowerCaseLetter,upperCaseLetter,digit,specialCharacter = 0;
   if([textField.text length] >= 10)
   {
      for (int i = 0; i < [textfield.text length]; i++) 
      {
         unichar c = [textfield.text characterAtIndex:i];
         if(!lowerCaseLetter)
         {
           lowerCaseLetter = [[NSCharacterSet lowercaseLetterCharacterSet] characterIsMember:c];
         }
         if(!upperCaseLetter)
         {
           upperCaseLetter = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:c];
         }
         if(!digit)
         {
            digit = [[NSCharacterSet decimalDigitCharacterSet] characterIsMember:c];
         }
         if(!specialCharacter)
         {
            specialCharacter = [[NSCharacterSet symbolCharacterSet] characterIsMember:c];
         }
      }

      if(specialCharacter && digit && lowerCaseLetter && upperCaseLetter)
      {
         //do what u want
      }
      else
      { 
         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                        message:@"Please Ensure that you have at least one lower case letter, one upper case letter, one digit and one special character"
                                                       delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
      }

   }
   else
   {
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                        message:@"Please Enter at least 10 password"
                                                       delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
   }
}

希望这有助于...

关于objective-c - iOS 中 UITextField 中的密码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15132276/

相关文章:

iphone - 如何从已弹出的 View Controller 类中释放/取消分配/返回?

ios - 错误域=NSCocoaErrorDomain 代码=512 "The operation couldn’ t be completed.The operation couldn't be completed.是一个目录

objective-c - 禁用某些文件的自动引用计数

ios - 将 GMSMarker 添加到 map 时,应用程序仅在 iPhone 5 上崩溃 : EXC_BAD_ACCESS

javascript - 停用 Smarty Streets 功能

Angular 5 - 使用模板驱动表单的动态表单验证

ios - Xcode 不编译 "Terminating app due to uncaught exception ' NSInternalInconsistencyException'”

objective-c - XML 文件中的奇怪字符(来自用户输入?)

c++ - Objective C 中的函数/方法!

javascript - javascript中计算不正确的问题