【问题标题】:How to validate textfield如何验证文本字段
【发布时间】:2023-03-25 12:42:01
【问题描述】:

在我的应用程序中,我将一个文本字段用于电子邮件,另一个用于用户名和按钮,在输入数据单击按钮后在按钮事件下编写代码显示另一个视图,我的问题是编写电子邮件验证代码(在此格式)这些警报视图在按钮单击时显示(msg-输入正确的电子邮件格式)但我想显示这些警报移动到下一个文本文件假设我输入了错误格式的电子邮件和电影到下一个字段它的用户名文本文件当时电子邮件警报视图将显示。

【问题讨论】:

    标签: ios uitextfield


    【解决方案1】:

    我已经验证了有关 editingDidEnd 事件的字段并使用了以下代码:

     - (IBAction) emailValidation:(id)sender {
    NSString *eml=((UITextField *)sender).text;
    
    NSString *regex = @"\\b([a-zA-Z0-9%_.+\\-]+)@([a-zA-Z0-9.\\-]+?\\.[a-zA-Z]{2,6})\\b"; 
    
    NSPredicate * regextest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
    
    BOOL x= [regextest evaluateWithObject:eml];
    
    if (x==FALSE) {
        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Errror!" message:@"You have entered incorrect email ID" delegate:self cancelButtonTitle:@"Wanna Correct" otherButtonTitles:nil];
        [alert show];
        [emailField becomeFirstResponder];
        [alert release];    
    }   
    }
    
    -(IBAction)passwordValidator:(id)sender{
    NSString *pwd=[NSString stringWithString:passwordField.text];
    int lngth=[pwd length]; 
    int minlength=6;
    
    NSString *regex = @"\\b([a-zA-Z0-9]+)\\b"; 
    
    NSPredicate * regextest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
    
    BOOL x= [regextest evaluateWithObject:pwd];
    
    if (lngth>=minlength) {
        NSLog(@"passoword length is enough");
        if (x==FALSE) {
            NSLog(@"Special charector check enabled");
            UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"No Special Charectors" message:@"please don't use special charectors" delegate:self cancelButtonTitle:@"Wanna Correct" otherButtonTitles:nil];
            [alert show];
            [alert release];
            [passwordField becomeFirstResponder];
            [self.view addSubview:passwordField];
        }
    }
    else {
        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Poor length" message:@"Password length must not be less than 8.." delegate:self cancelButtonTitle:@"Wanna Correct" otherButtonTitles:nil];
        [alert show];
        [alert release];
        [passwordField becomeFirstResponder];
    }
    }
    

    试试这些,然后在任何相关事件上调用,你会得到想要的结果。祝你好运:)

    【讨论】:

      【解决方案2】:

      使用NSPredicate 和Regex:

      - (BOOL)validateEmailString:(NSString*)email
      {
          NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
          NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
          return [emailTest evaluateWithObject:email];
      }
      

      对于以逗号 (,) 分隔的电子邮件:

      - (NSMutableArray*)validateEmailWithString:(NSString*)emails
      {
          NSMutableArray *emails = [[NSMutableArray alloc] init];
          NSArray *emailOfArray = [emails componentsSeparatedByString:@","];
          for (NSString *email in emailOfArray)
          {
              NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
              NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
              if ([emailTest evaluateWithObject:email])
                  [emails addObject:email];
          }
          return [emails autorelease];
      }
      

      【讨论】:

        【解决方案3】:

        在这里查看。Email Validation

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-14
          • 1970-01-01
          • 2011-12-01
          • 2013-09-11
          • 1970-01-01
          相关资源
          最近更新 更多