I may add that when I reached the point of having my 'AT cagnazzo.name' address rejected by the form, I was already pretty angry because the form had a sign, all written in UPPER CASE LETTERS, saying that the form did not support other browsers than Internet Explorer.
:=) C. On 3/12/12 7:43 PM, Owen DeLong wrote: > I think this proves one thing... > > Given enough monkeys with typewriters, you will, in fact, not > get Shakespeare, but, instead, regular expressions for Shakespeare's > email address. > > Owen > > On Mar 12, 2012, at 3:09 PM, Paul Graydon wrote: > >> On 03/12/2012 09:46 AM, Tei wrote: >>> On 12 March 2012 09:59, Carlos Martinez-Cagnazzo<carlosm3...@gmail.com> >>> wrote: >>>> Hey! >>>> >>>> On 3/8/12 8:24 PM, Lamar Owen wrote: >>>>> On Monday, March 05, 2012 09:36:41 PM Jimmy Hess wrote: >>>>> ... >>>>>> (16) The default gateway's IP address is always 192.168.0.1 >>>>>> (17) The user portion of E-mail addresses never contain special >>>>>> characters like "-" "+" "$" "~" "." ",", "[", "]" >>>> I've just had my ' xx AT cagnazzo.name' email address rejected by a web >>>> form saying that 'it is not a valid email address'. So I guess point >>>> (17) can be extended to say that 'no email address shall end in anything >>>> different that .com, .net or the local ccTLD' >>>> >>>> :=) >>>> >>>> Carlos >>> Yea, I don't even know how programmers can get that wrong. The regex >>> is not even hard or anything. >>> >>> >>> (?:[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])+)\]) >>> >>> >> It's supposedly a lot harder than that. Try this for strict RFC822 >> compliance (from http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html): >> >> (?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t] >> )+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ >> \t]))*"(?:(?: >> \r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] >> \000-\031]+(?:(?:( >> ?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ >> \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] >> \000-\0 >> 31]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\ >> ](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] >> \000-\031]+ >> (?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?: >> (?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z >> |(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ >> \t]))*"(?:(?:\r\n) >> ?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] >> \000-\031]+(?:(?:(?:\ >> r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ >> \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n) >> ?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ >> \t] >> )*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] >> \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])* >> )(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t] >> )+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ >> \t])*))*) >> *:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+ >> |\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ >> \t]))*"(?:(?:\r >> \n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] >> \000-\031]+(?:(?:(?: >> \r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ >> \t >> ]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] >> \000-\031 >> ]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\]( >> ?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] >> \000-\031]+(? >> :(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(? >> :\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] >> \000-\031]+(?:(? >> :(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)? >> [ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] >> \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]| >> \\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ >> \t])*(?:[^()<> >> @,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|" >> (?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ >> \t] >> )*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\ >> ".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ >> \t])*(? >> :[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[ >> \]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] >> \000- >> \031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|( >> ?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ >> \t])*(?:@(?:[^()<>@,; >> :\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([ >> ^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ >> \t])*(?:[^()<>@,;:\\" >> .\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\ >> ]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ >> \t])*(?:[^()<>@,;:\\".\ >> [\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\ >> r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] >> \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\] >> |\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] >> \0 >> 00-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\ >> .|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ >> \t])*(?:[^()<>@, >> ;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(? >> :[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ >> \t])* >> (?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\". >> \[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ >> \t])*(?:[ >> ^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\] >> ]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ >> \t])*)(?:,\s*( >> ?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\ >> ".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ >> \t])*)(?:\.(?:( >> ?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[ >> \["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ >> \t >> ])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t >> ])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ >> \t])*)(? >> :\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+| >> \Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ >> \t])*))*|(?: >> [^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\".\[\ >> ]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ >> \t])*)*\<(?:(?:\r\n) >> ?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\[" >> ()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ >> \t])*)(?:\.(?:(?:\r\n) >> ?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<> >> @,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ >> \t])*))*(?:,@(?:(?:\r\n)?[ >> \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@, >> ;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ >> \t] >> )*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\ >> ".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ >> \t])*)? >> (?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\["()<>@,;:\\". >> \[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ >> \t])*)(?:\.(?:(?: >> \r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z|(?=[\[ >> "()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ >> \t]) >> *))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t]) >> +|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ >> \t])*)(?:\ >> .(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ >> \t])+|\Z >> |(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ >> \t])*))*\>(?:( >> ?:\r\n)?[ \t])*))*)?;\s*) >> >> Paul >