回答同学,写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>