Impressive, but how about an email address such as [EMAIL PROTECTED] -- obviously this can be incorporated into the regex, but does anyone know of a comprehensive database or list of all valid domain names which one could throw into the regex (presumably one could bundle in a | delimited list of them)
----- Original Message ----- From: "Robertson-Ravo, Neil (RX)" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, January 28, 2003 1:43 PM Subject: RE: [ cf-dev ] Regular Expression for Email and Domain checking - it works! > Holy shit....nice one... very nice indeed......... > > -----Original Message----- > From: Paul Johnston [mailto:[EMAIL PROTECTED]] > Sent: 28 January 2003 13:47 > To: [EMAIL PROTECTED] > Subject: [ cf-dev ] Regular Expression for Email and Domain checking - > it works! > > > Everyone, > > For those that can't be bothered to read to the bottom here is the regular > expression for validating an email address: > > ^[a-zA-Z0-9!##\$%&''\*\+-/=\?\^_`\{\|}~]+([.][a-zA-Z0-9!##\$%&''\*\+-/=\?\^_ > `\{\|}~]+)*@([a-z0-9]([-]|[a-z0-9])*[a-z0-9][.])+(([a-z0-9]([-]|[a-z0-9])*[a > -z0-9])|com|co[.]uk|net|org|com[.]uk)$ > > Having read the various RFC's around the place about domains and emails, I > just thought I'd let you know what I'd found out! > > Here is the regular expression for validating the part before an @ in an > email address: > > [a-zA-Z0-9!#$%&'*+-/=?^_`{|}~]+([.][a-zA-Z0-9!#$%&'*+-/=?^_`{|}~]+)* > > Basically, according to RFC 2822 (and I haven't checked what's updated it > yet, so this may still be incomplete), this is the form that an address must > take before the @ sign. It starts with either a digit or a number, or one > of the other characters in there, and then can include a period, but must > end in one of those characters (ie not in a period). There are 2 other forms > of email address, but they are mainly for use internally within a mailserver > (and are unimportant in terms of functionality of the regex) and it should > be no problem to ignore them. > > My previous email outlined the regular expression for validating a domain > name (simple form): > > ([a-z0-9]([-]|[a-z0-9])*[a-z0-9][.])+(([a-z0-9]([-]|[a-z0-9])*[a-z0-9])|com| > co[.]uk|net|org|com[.]uk) > > And you can create a regular expression for validating emails. Please note, > that none of this is tested, although it does look okay to me ;). The > regular expression then for testing if an email is valid is: > > [a-zA-Z0-9!#$%&'*+-/=?^_`{|}~]+([.][a-zA-Z0-9!#$%&'*+-/=?^_`{|}~]+)*@([a-z0- > 9]([-]|[a-z0-9])*[a-z0-9][.])+(([a-z0-9]([-]|[a-z0-9])*[a-z0-9])|com|co[.]uk > |net|org|com[.]uk) > > (NOTE: watch the word wrap) > > Bearing in mind that CF needs to escape several of the characters in the > regular expression, it becomes this: > > [a-zA-Z0-9!##\$%&''\*\+-/=\?\^_`\{\|}~]+([.][a-zA-Z0-9!##\$%&''\*\+-/=\?\^_` > \{\|}~]+)*@([a-z0-9]([-]|[a-z0-9])*[a-z0-9][.])+(([a-z0-9]([-]|[a-z0-9])*[a- > z0-9])|com|co[.]uk|net|org|com[.]uk) > > And also taking into account that you need to check the whole string, ie > this must be from the start to the end, you get: > > ^[a-zA-Z0-9!##\$%&''\*\+-/=\?\^_`\{\|}~]+([.][a-zA-Z0-9!##\$%&''\*\+-/=\?\^_ > `\{\|}~]+)*@([a-z0-9]([-]|[a-z0-9])*[a-z0-9][.])+(([a-z0-9]([-]|[a-z0-9])*[a > -z0-9])|com|co[.]uk|net|org|com[.]uk)$ > > You can easily make this into a function or into a custom tag. In fact, > I'll be nice and write the function for you: > > <cfscript> > // returns true or false depending on whether or not it's valid > function isValidEmail(emailstr) { > regex = > "^[a-zA-Z0-9!##\$%&''\*\+-/=\?\^_`\{\|}~]+([.][a-zA-Z0-9!##\$%&''\*\+-/=\?\^ > _`\{\|}~]+)*@([a-z0-9]([-]|[a-z0-9])*[a-z0-9][.])+(([a-z0-9]([-]|[a-z0-9])*[ > a-z0-9])|com|co[.]uk|net|org|com[.]uk)$"; > if(REFind(regex, emailstr)) { > return true; > } > else > return false; > } > </cfscript> > > (NOTE: watch the word wrap again) > > I hope this helps you all sort your email addresses out okay now! > > Paul > ------------------------------------------- > Paul Johnston > PJ Net Solutions Ltd > http://www.pjnetsolutions.com > [EMAIL PROTECTED] > +44 (0)7866 573013 > > > > > -- > ** Archive: http://www.mail-archive.com/dev%40lists.cfdeveloper.co.uk/ > > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > For human help, e-mail: [EMAIL PROTECTED] > > -- > ** Archive: http://www.mail-archive.com/dev%40lists.cfdeveloper.co.uk/ > > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > For human help, e-mail: [EMAIL PROTECTED] > -- ** Archive: http://www.mail-archive.com/dev%40lists.cfdeveloper.co.uk/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] For human help, e-mail: [EMAIL PROTECTED]