0

これは私のコードです。

- (BOOL)validateEmail:(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];
}

これは、テキストフィールドに入力した電子メールを検証するために使用する関数です。私がしていることが正しいか間違っているかはわかりません。- (BOOL)textFieldShouldEndEditingの代わりに他の関数でチェックする必要がありますか はいの場合は、どの関数を使用する必要があるか教えてください。正規表現または検証が間違っている場合は、正しいものを取得するのに役立ちます。

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
    BOOL eb;
    if (textField.tag == 44) {
        eb =[self validateEmail:textField.description];
        NSLog(@" %s", eb ? "true" : "false");
        if(!eb)
        {
            UIAlertView *alertsuccess = [[UIAlertView alloc] initWithTitle:@"Sorry" message:@"Please enter correct email id"
                                                                  delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

            [alertsuccess show];
            [alertsuccess release]; 
        }
    }
    return YES;
}  
4

4 に答える 4

0

これを試して:

+(BOOL)emailValidate:(NSString *)email
{
    //Based on the string below
    //NSString *strEmailMatchstring=@"\\b([a-zA-Z0-9%_.+\\-]+)@([a-zA-Z0-9.\\-]+?\\.[a-zA-Z]{2,6})\\b";

    //Quick return if @ Or . not in the string
    if([email rangeOfString:@"@"].location==NSNotFound || [email rangeOfString:@"."].location==NSNotFound)
        //NSLog(@"%@",[email rangeOfString:@"@"]);
        //          NSLog(@"%@",[email rangeOfString:@"."]);
        return YES;

    //Break email address into its components
    NSString *accountName=[email substringToIndex: [email rangeOfString:@"@"].location];
    DLog(@"%@",accountName);
    email=[email substringFromIndex:[email rangeOfString:@"@"].location+1];
    DLog(@"%@",email);
    //'.' not present in substring
    if([email rangeOfString:@"."].location==NSNotFound)
        return YES;
    NSString *domainName=[email substringToIndex:[email rangeOfString:@"."].location];
    NSLog(@"%@",domainName);

    NSString *subDomain=[email substringFromIndex:[email rangeOfString:@"."].location+1];
    NSLog(@"%@",subDomain);

    //username, domainname and subdomain name should not contain the following charters below
    //filter for user name
    NSString *unWantedInUName = @" ~!@#$^&*()={}[]|;':\"<>,?/`";
    //filter for domain
    NSString *unWantedInDomain = @" ~!@#$%^&*()={}[]|;':\"<>,+?/`";
    //filter for subdomain
    NSString *unWantedInSub = @" `~!@#$%^&*()={}[]:\";'<>,?/1234567890";

    //subdomain should not be less that 2 and not greater 6
    if(!(subDomain.length>=2 && subDomain.length<=6)) 
        return YES;

    if([accountName isEqualToString:@""] 
       || [accountName rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:unWantedInUName]].location!=NSNotFound
       || [domainName isEqualToString:@""] 
       || [domainName rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:unWantedInDomain]].location!=NSNotFound 
       || [subDomain isEqualToString:@""] 
       || [subDomain rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:unWantedInSub]].location!=NSNotFound)
        return YES;

    return NO;
}

電子メールが有効な場合は NO を返し、電子メールが無効な場合は Yes を返します。

于 2013-02-06T06:43:36.153 に答える
0

変化 :

eb =[self validateEmail:textField.description];

に :

eb =[self validateEmail:textField.text];

また、以下のコードを使用できます。

NSString *emailString = txt_EmailId.text;// storing the entered email in a string. 
// Regular expression to checl the email format. 
NSString *emailReg = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 

NSPredicate *emailTest=[NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailReg]; 

if(([emailTest evaluateWithObject:emailString]!=YES)||[emailString isEqualToString:@""]) 
{
      alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Enter Email in abc@example.com format" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

      [alert show]; 
      [alert release];
      txt_EmailId.text = @"";
       return;      
}
于 2013-02-06T06:44:10.997 に答える
0

以下のコードを試してください....

    if([self validation])
{
   //do your stuff

}
else
{
  //display error...
}



    -(BOOL)validation
   {
    NSString *emailString = mailLbl.text; //your email text....
    NSString *emailReg = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailReg]; 

     if (([emailTest evaluateWithObject:emailString] != YES) || [emailString isEqualToString:@""])
{
    return NO;
}
    else 
    {
       return YES;
    }

 }

機能しているかどうか教えてください!!!!!!!!

ハッピーコーディング!!!!

于 2013-02-06T06:49:15.567 に答える
0

このコードを試してください:

// *** Email ID Validation *** //

    NSString* emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 

    NSPredicate* emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 

    NSString *subjectString =emailtfd.text;

if ([emailTest evaluateWithObject:subjectString] != YES)
    {

        // *** Declare and Initialize the AlertView *** //

        UIAlertView *signupalert = [[UIAlertView alloc] initWithTitle:@"Enter Valid Email ID" message:@"abc@example.com format" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

        [signupalert show];

        [signupalert release];

    }
于 2013-02-06T06:50:58.943 に答える