[pve-devel] [PATCH v2 common] fix #2111: regex match email address without tld

Stoiko Ivanov s.ivanov at proxmox.com
Tue Feb 26 17:48:36 CET 2019


On Tue, 26 Feb 2019 13:33:02 +0100
Oguz Bektas <o.bektas at proxmox.com> wrote:

> for matching root at localhost or similar.
> 
> Signed-off-by: Oguz Bektas <o.bektas at proxmox.com>
> ---
>  src/PVE/JSONSchema.pm | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/src/PVE/JSONSchema.pm b/src/PVE/JSONSchema.pm
> index 36fa994..9820649 100644
> --- a/src/PVE/JSONSchema.pm
> +++ b/src/PVE/JSONSchema.pm
> @@ -356,8 +356,7 @@ register_format('email', \&pve_verify_email);
>  sub pve_verify_email {
>      my ($email, $noerr) = @_;
>  
> -    # we use same regex as in Utils.js
> -    if
> ($email !~ /^(\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,63}$/)
> {
> +    if
> ($email !~ /^(\w+)([\-+.]\w+)*@(\w[\-\w]*\.){0,5}([A-Za-z]){2,63}$/)
> { return undef if $noerr; die "value does not look like a valid email
> address\n"; }

hm - a quick check of [0], would suggest that for the 'host' part of
the e-mail we might want to:
* use [-a-zA-Z0-9] for all components of a hostname (only ASCII
  alphanumerics and '-'
* the limitation to maximum of 5 subdomain-entries seems arbitrary
  (although even my longest e-mail-address has only five
  subdomain-entries)
* why do we restrict the subdomains to have at least 2 characters? -
  would allow for 1 character subdomains as well

for the localpart the regex seems a bit complex - if I read it right we
want it to:
* start with a word-character (\w) and afterwards a combination of
  \w|[-+.]
This sounds somewhat reasonable to me, but I would write it as:
'\w([-+.]\w)*'



[0]https://en.wikipedia.org/wiki/Domain_Name_System




More information about the pve-devel mailing list