| |
最近在学Javascript老师提到了正则表达式,虽然没教咱们,但是凭着学以自用的原则,偶自学了(本人目前属于菜鸟型) 现在碰到一个问题,在验证Email地址(众所周知,只能包含字母 数字 _ . @ -)的时候,我不希望邮箱地址里出现连续的2个. 或_ 而且还必须要做到@字符以前可以有一个. 之后可以有多个. 地址最后一个字符只能是字母,并且不能出现形如 ._. 或_._的字符组合 请大家指教 下面是本人的代码,写的不全,因为实在是一句话写不下来,才分了几个步骤做完的 //验证Email开始 function checkEmail() //验证邮箱 { email=document.all("email") email.value=trim(email.value) //先去空格 if(email.value.length>=30) { alert("邮箱地址长度太大!\n\r邮箱地址首字符不能是下划线,且必须包含@ 和 . 符号\n\r且最大长度不能超过30位\n\r空格将会自动去掉") email.value="" email.focus() return false } t=/^[a-zA-Z0-9]\w*@\w+\.\w[a-zA-Z0-9_.]*[a-zA-Z]$/ s=email.value.search(t) if(s==-1) { alert("邮箱地址格式不正确!\n\r邮箱地址首字符不能是下划线,且必须包含@ 和 . 符号\n\r且最大长度不能超过30位\n\r空格将会自动去掉") email.value="" email.focus() return false } x=/(_|\.)\1/ if(email.value.search(x)!=-1) { alert("邮箱地址格式不正确!\n\r邮箱地址首字符不能是下划线,且必须包含@ 和 . 符号\n\r且最大长度不能超过30位\n\r空格将会自动去掉") email.value="" email.focus() return false } index=email.value.indexOf("_") while(true) { if(email.value.charAt(index-1)=="."||email.value.charAt(index+1)==".") //验证 _ 前后均不能为 . { alert("邮箱地址格式不正确!\n\r邮箱地址首字符不能是下划线,且必须包含@ 和 . 符号\n\r且最大长度不能超过30位\n\r空格将会自动去掉") email.value="" email.focus() return false } index=email.value.indexOf("_",index+1) if(index==-1) //已经搜索不到_时跳出循环 break } open("checkmail.html","验证邮箱","width=200 height=50") return true } //验证Email结束 |