email validation with regEx

Sannyasin Sivakatirswami katir at hindu.org
Mon Jul 12 11:23:43 EDT 2004


I have a very old (2001) email address validation function from Ricardo 
(see below) that was created before the full regEx was added to the 
engine. Now that we have a better regEx engine I suspect we could 
vastly simply this... does anyone have an upgrade written in xTalk with 
Revolution regEx they could share? I see in formMail.pl (which I'm 
abandoning)  a pretty terse function but I don't know if this is a good 
validation or not nor if I can repurpose the perl regEx to xTalk -- 
i'll try but I'm a regEx baby hoping for a hand out.... ;-)


TIA

Sannyasin Sivakatirswami
Himalayan Academy Publications
at Kauai's Hindu Monastery
katir at hindu.org

www.HimalayanAcademy.com,
www.HinduismToday.com
www.Gurudeva.org
www.Hindu.org

======= from perl:

     # If the e-mail address contains:                                   
      #
     if ($email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ ||

         # the e-mail address contains an invalid syntax.  Or, if the    
      #
         # syntax does not match the following regular expression 
pattern     #
         # it fails basic syntax verification.                           
      #

         $email !~ 
/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) {

         # Basic syntax requires:  one or more characters before the @ 
sign,  #
         # followed by an optional '[', then any number of letters, 
numbers,  #
         # dashes or periods (valid domain/IP characters) ending in a 
period  #
         # and then 2 or 3 letters (for domain suffixes) or 1 to 3 
numbers    #
         # (for IP addresses).  An ending bracket is also allowed as it 
is    #
         # valid syntax to have an email address like: 
user@[255.255.255.0]   #

         # Return a false value, since the e-mail address did not pass 
valid  #
         # syntax.                                                       
      #
         return 0;
     }

     else {

         # Return a true value, e-mail verification passed.              
      #
         return 1;
     }

========= old xtalk validator from Ricardo




function isWellFormedMailtoScheme  email
   #- function isWellFormedMailtoScheme(email)
   # return TRUE if email is a legal email URI, else return FALSE
   # We are not actually *validating* the email address, only its syntax.
   # Per address specification rules of RFC822: Standard for ARPA 
Internet Text Messages
   # http://www.w3.org/Protocols/rfc822/Overview.html

   # Basic syntax requires: one or more characters before the @ sign,

   split email by "@"
   if extents(email) <> "1,2" then return false # only 1 @-sign is 
permitted
   put email[2] into hostanddomain

   # There are 2 options to check, domain-literal or domain-logical:


   # domain-literal option:
   # primitive network host address form, must have [###.###.###.###] 
where 0 < # < 256
   if char 1 of hostanddomain = "[" then
     if not last char of hostanddomain = "]" then return false
     delete char 1 of hostanddomain
     delete last char of hostanddomain
     set the itemDel to "."
     if the num of items of hostanddomain <> 4 then return false
     repeat with x = 1 to 4
       if not isNumber(item x of hostanddomain) then return false
       if item x of hostanddomain > 255 or item x of hostanddomain < 1 
then return false
     end repeat
     return TRUE
   end if

   # domain-logical option: (the "normal" form)
   # this permits an arbitrary number of strings separated by ".", 
ending in a domain name
   set the itemDel to "."
   put the num of items of hostanddomain into hostanddomainItems
   if hostanddomainItems = 0 then return false
   if hostanddomain contains ".." then return false # empty hosts not 
allowed
   repeat with x = length(hostanddomain) down to 1
     if not ("0123456789.-abcdefghijklmnopqrstuvwxyz_" contains char x 
of hostanddomain) \
     then return false
   end repeat
   return TRUE
end isWellFormedMailtoScheme



More information about the use-livecode mailing list