Thats right.. In our company we use the (crazy) regex pattern taken from
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html



String emailPattern = "(?:(?:\\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*)";


Would anyone in the wicket team like to use this as the emailvalidation
pattern instead, I would be happy to submit a patch (for both 1.2 or 2.0
if thats the case).


Regards
Frank Bille
Avaleo


On Tue, 2006-06-20 at 10:08 +0200, Michiel Korthuis wrote:
> hi,
> 
> In
> wicket.markup.html.form.validation.EmailAddressPatternValidator.java
> the validation-expression is incorrect.
> the regular expression reads:
> ^[_a-z0-9-]+(\\.[_a-z0-9-]+)[EMAIL PROTECTED](\\.[a-z0-9-]+)*(\
> \.[a-z]{2,3})$ 
> 
> According to this expression the TLD is 2 or 3 characters, but that's
> incorrect.
> Nowadays it can exceed the limit of 3 characters (for example: ".aero"
> or ".travel". Source: http://www.iana.org/gtld/gtld.htm ).
> 
> Michiel
> 
> 
> _______________________________________________
> Wicket-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/wicket-user



_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to