![]() |
|
|
Published: Friday, May 28, 1999
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:
This is were the true power of Jscript this function lies, so let's
The first part: ^ 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: 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: \@ 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] 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: If you have any questions feel free to email me at: madcow@olg.com Happy Programming!
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||