tags:

views:

50

answers:

1
NSString *e = email.text;
NSString *emailRegEx =@"(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-z0-9!#$%\\&'*+/=?\\^_`{|}"
@"~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\"
@"x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-"
@"z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5"
@"]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-"
@"9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21"
@"-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])";





NSPredicate *regExPredicate =[NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
BOOL myStringMatchesRegEx = [regExPredicate evaluateWithObject:e];
NSLog(@"myStringMatchesRegEx = %d ",myStringMatchesRegEx);

thsi code validate yout email field but i cant understand how it works

+2  A: 

thats one huge regular expression :)

Basically, the NSPredicate states that it wants to match itself (which is an NSString in the end) with a regular expression (are you familiar with Regular Expressions?) and returns a YES/NO response if the given NSString (which is the email.text) matches that regular expression.

In essence, its making sure that the email text is valid according to the massive regular expression (which I will not go into as it would take hours to get my head around).

Mark
can u tell me some logic to validate email without this kind of regular expression
pankaj kainthla
The regex is so complex *because* it's not trivial to correctly validate an email under all circumstances. What do you want instead? Nasty bunch of nested if-statements?
Martin
yeah which anyone can understand for eg; string has suffix :com or in or like this normal logic
pankaj kainthla
Like Martin said, email address are massively complex, emails do not net com in them (.net address for example), the email address spec itself it huge and not to be underestimated, if you are serious about valid email addresses, use this regex
Mark