[教學]驗證email地址是否合法完整實例 for ASP



贊助商連結


iget
2001-05-16, 10:11 AM
分成index.html的主網頁與.js的一些判斷

index.html如下:
<hr>
<html>
<head>
<title>email地址是否合法 index.html</title>
<Script language = "JavaScript" src="mail.js"></script>
<script language="JavaScript">
<!--
function mail_process(stringin)
{
var num=email_test(stringin);
var str="";
if (num!=0)
{
switch (num)
{
case 1:
str="首字符必須用字母!或不能為空白!請重填。";
break;
case 2:
str="忘了填寫郵件伺服器的位址了!請重填。";
break;
case 3:
str="您的帳號太短,不能少於三個字符!請重填。";
break;
case 4:
str="您的帳號太長,不能多於十九個字符!請重填。";
break;
case 5:
str="您使用了非法字符!請重填。";
break;
case 6:
str="您的郵件伺服器的位址不合法!請重填。";
break;
default:
str="您的email地址不合法!請重填。";
}
alert(str);

}
else
{
alert("謝謝您!");
eval(window.close());
}

}
//-->
</script>
</head>
<body>
<form method="POST" onsubmit="mail_process(email_add.value)">
<p>請輸入您的E-mail地址:
<input type="text" name="email_add" size="20" >
<input type="submit" value="確定" name="B1"></p>
</form>
</body>
</html>


2.//mail.js
function char_test(chr)
//字符檢測函數
{
var i;
var smallch="abcdefghijklmnopqrstuvwxyz";
var bigch="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for(i=0;i<26;i++)
if(chr==smallch.charAt(i) || chr==bigch.charAt(i))
return(1);
return(0);
}

function spchar_test(chr)
//數字和特殊字符檢測函數
{
var i;
var spch="_-.0123456789";
for (i=0;i<13;i++)
if(chr==spch.charAt(i))
return(1);
return(0);
}

function email_test(str)
{
var i,flag=0;
var at_symbol=0;
//“@”檢測的位置
var dot_symbol=0;
//“.”檢測的位置
if(char_test(str.charAt(0))==0 )
return (1);
//首字符必須用字母

for (i=1;i<str.length;i++)
if(str.charAt(i)=='@')
{
at_symbol=i;
break;
}
//檢測“@”的位置

if(at_symbol==str.length-1 || at_symbol==0)
return(2);
//沒有郵件服務器域名

if(at_symbol<3)
return(3);
//帳號少於三個字符

if(at_symbol>19 )
return(4);
//帳號多於十九個字符

for(i=1;i<at_symbol;i++)
if(char_test(str.charAt(i))==0 && spchar_test(str.charAt(i))==0)
return (5);
for(i=at_symbol+1;i<str.length;i++)
if(char_test(str.charAt(i))==0 && spchar_test(str.charAt(i))==0)
return (5);
//不能用其它的特殊字符

for(i=at_symbol+1;i<str.length;i++)
if(str.charAt(i)=='.') dot_symbol=i;
for(i=at_symbol+1;i<str.length;i++)
if(dot_symbol==0 || dot_symbol==str.length-1)
//簡單的檢測有沒有“.”,以確定伺服器名稱是否合法
return (6);

return (0);
//郵件名合法
}