回答同学,写ASP程序中,遇到Email表单验证合法性的问题的解答,今天有个同学问要有正则表达式吗?当时我想,用不着,一个个情况验证就可以了。今天坐班车时又想,也许正则表达式会更简单,我再想想,一会贴上来。先把javascript的写法,放在这里供大家参考。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>无标题文档</title>
<script langauge="Javascript"> <!-- // 如果输入值为空,函数返回false function checkEmail() { var emailStr=document.form1.email.value; if (emailStr.length == 0) { alert("Email地址不正确"); return false; } var emailPat=/^(.+)@(.+)$/; var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"; var validChars="\[^\\s" + specialChars + "\]"; var quotedUser="(\"[^\"]*\")"; var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/; var atom=validChars + '+'; var word="(" + atom + "|" + quotedUser + ")"; var userPat=new RegExp("^" + word + "(\\." + word + ")*$"); var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$"); var matchArray=emailStr.match(emailPat); if (matchArray == null) { alert("Email地址不正确"); return false; } var user=matchArray[1]; var domain=matchArray[2]; if (user.match(userPat) == null) { alert("Email地址不正确"); return false; } var IPArray = domain.match(ipDomainPat); if (IPArray != null) { for (var i = 1; i <= 4; i++) { if (IPArray[i] > 255) { alert("Email地址不正确"); return false; } } return true; } var domainArray=domain.match(domainPat); if (domainArray == null) { alert("Email地址不正确"); return false; } var atomPat=new RegExp(atom,"g"); var domArr=domain.match(atomPat); var len=domArr.length; if ((domArr[domArr.length-1].length < 2) || (domArr[domArr.length-1].length > 3)) { alert("Email地址不正确"); return false; } if (len < 2) { alert("Email地址不正确"); return false; } alert("Email地址正确");//如果提交给ASP页面处理,这句可以省略 return true; }
function MM_callJS(jsStr) { //v2.0 return eval(jsStr) } //--> </script> </head>
<body> <form name="form1" method="post" action="ok.asp" onSubmit="JavaScript:return checkEmail();"> 请输入Email: <input name="email" type="text" id="email" > <input name="Submit" type="submit"value="提交"> </form> </body> </html>
|