When you think ASP, think...
Recent Articles
All Articles
ASP.NET Articles
ASPFAQs.com
Message Board
Related Web Technologies
User Tips!
Coding Tips

Sections:
Sample Chapters
Commonly Asked Message Board Questions
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Security
Stump the SQL Guru!
XML Info
Information:
Feedback
Author an Article
ASP ASP.NET ASP FAQs Message Board Feedback
Print this page.
Published: Friday, May 28, 1999

ASP/Jscript Email Validation


Updated Versions Available
Updated versions of these scripts are available at the following FAQs on ASPFAQs.com:

The other day I noticed that number 3 on the most visited page was the email validation routine. A light bulb went off in my head. What a great way to show the power of using JavaScript in ASP!

Since most ASP developers use VBscript, I wanted to build a short server-side JavaScript that people could just place into an include file and then reference it from their code.

Another factor I had to consider was the complexity. I wanted to make it comprehensive but I didn't want the user leaving because his email wouldn't validate properly. So I came up with this routine:


<script language=JavaScript runat=Server>
function test(src) {
     var emailReg = "^[\\w-_\.+]*[\\w-_\.]\@([\\w]+\\.)+[\\w]+[\\w]$";
     var regex = new RegExp(emailReg);
     return regex.test(src);
  }
</script>

And you can reference it from your VBscript using something like this:


<script language=VBscript runat=Server>
email = trim(request.form("email"))
If email = "" Then
   response.write "<form action='regex_email.asp' method='post'>
   response.write "<input type='text' name='email'><br>"
   response.write "<input type='submit' value='submit'></form>"
else
   If test(email) = True Then
	   response.write "Good"
   else
   end if
end if
</script>

If you look at the VBscript code you can see that if the form has data then it will send it to the Jscript "test" function using:


If test(email) = True Then
	response.write "Good"
else
	response.write "Bad"
end if

Once the data is passed to the Jscript Function "test" it will then evaluate it based on the following regular expression:

^[\\w-_\.+]*[\\w-_\.]\@([\\w]+\\.)+[\\w]+[\\w]$

This is were the true power of Jscript this function lies, so let's

The first part:
^[\\w-_\.+]

^ means "check the first character". In this case it's checking to make sure its a word character (a-z0-9) using \\w and it can also be a underscore, hyphen, period, or plus sign.

Next:
*[\\w-_\.]

The * means "match the preceding zero or more times". and of course the next part [\\w-_\.] makes sure they are word characters or underscores, etc.

Next:
\@([\\w]+\\.)+

\@ checks for the @ symbol. [\\w]+ means find one or more alphanumeric characters, while \\. matches a literal period. These are grouped and another + symbol is used - ([\\w]+\\.)+ - to indicate that this match can occur one to many times. In other words, it allows email addresses like xxx@xxx.com and xxx@yyy.zzz.com.

Last:
[\\w]+[\\w]$

[\\w] makes sure there is one or more word characters after the period. [\\w]$ checks the last character to make sure it's a word character (domain or IP address) and not a odd character. $ means "check the last character".

That pretty much sums the regular expression up. You can find out more about using regular expressions on http://msdn.microsoft.com/scripting. Just a note though - all the docs must be taken with a grain of salt. I had to make a few changes in order to get the expressions to work (like putting \\w instead of the normal \w).


Attachments:

  • Zip file with this article's code...

    If you have any questions feel free to email me at: madcow@olg.com

    Happy Programming!


  • ASP.NET [1.x] [2.0] | ASPMessageboard.com | ASPFAQs.com | Advertise | Feedback | Author an Article