2011-10-10 8 views
7

मेरे पास 3 UITextFields (उपयोगकर्ता नाम, ईमेल और पासवर्ड) के साथ एक व्यू कंट्रोलर है।कैसे जांचें कि UITextField का टेक्स्ट मान्य ईमेल है या नहीं?

मुझे एक ऐसी विधि की आवश्यकता है जो पहले जांचता है, यदि सभी फ़ील्ड में टेक्स्ट है, तो जांचें कि ईमेल का टेक्स्टफील्ड एक वैध ईमेल है, शायद यह जांचकर कि इसमें @ साइन इन है या नहीं। क्या कोई इसके लिए सहायता कर सकता है?

उत्तर

4

यह एक उचित ईमेल के लिए UITextField की जांच करेगा।
इस विधि को textFields delegate पर जोड़ें, फिर जांचें कि क्या वर्ण बदलने वाले हैं, उन्हें जोड़ा जाना चाहिए या नहीं।
वापसी YES या NO पाठ फ़ील्ड वर्तमान पाठ के आधार पर एक मान्य ईमेल पता की तुलना में: अगर एक पाठ फ़ील्ड रिक्त है या बस अपने दृश्य नियंत्रक में कहीं भी if (myTextField.text.length > 0) {} का उपयोग नहीं

#define ALPHA     @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 
#define NUMERIC     @"1234567890" 
#define ALPHA_NUMERIC   ALPHA NUMERIC 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSCharacterSet *unacceptedInput = nil; 
    if ([[textField.text componentsSeparatedByString:@"@"] count] > 1) { 
     unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".-"]] invertedSet]; 
    } else { 
     unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".!#$%&'*+-/=?^_`{|}[email protected]"]] invertedSet]; 
    } 
    return ([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] <= 1); 
} 

जांच करने के लिए।

+0

http://stackoverflow.com/a/3638271/644149 इस regex के साथ अच्छा तरीका –

0

यदि आप आईओएस 4.0 या इससे अधिक लक्ष्यीकरण कर रहे हैं, तो आप NSRegularExpression पर भी विचार कर सकते हैं और उदाहरण के लिए this की लाइनों के साथ UITextField सामग्री की अधिक बारीकी से जांच कर सकते हैं।

3

इस कोशिश: -

if(![emailTextField.text isEqualToString:@""] && ![userNameTextField.text isEqualToString:@""] && ![passwordTextField.text isEqualToString:@""]) 
     { 

     NSString *emailRegEx = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
     NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx]; 
     //Valid email address 
     if ([emailTest evaluateWithObject:emailTextField.text] == YES) 
     { 
    } 
    else 
    { 
    //not valid email address 
    } 
} 


     else 
     { 
     //any of the text field is empty 
     } 
6

के बाद कोड Regex (नियमित expresion) का उपयोग कर ईमेल आईडी का सत्यापन की जाँच के लिए इस्तेमाल होता है।

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

है, इस तरह के .museum काम नहीं करेगा के रूप में नए डोमेन – Martin

5

मैंने मिमिट के समाधान का उपयोग किया है, लेकिन संग्रहालय जैसे लंबे नामों की अनुमति देने के लिए ईमेल रेगेक्स को संशोधित किया है। तो आखिरी घुंघराले ब्रैकेट अब कहते हैं {2, 6} नहीं {2, 4}। और मैंने इसे लंबे नाम से परीक्षण किया और यह काम करता है। आसान समाधान के लिए धन्यवाद Mimit।

-(BOOL) validateEmail: (NSString *) candidate { 
    NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"; 
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; // return 0; 
    return [emailTest evaluateWithObject:candidate]; 
} 
संबंधित मुद्दे