注册 登录
编程论坛 ASP技术论坛

[求助]用js验证Email的有效性

cainiao158 发布于 2007-11-03 00:11, 3312 次点击
<script language="javascript">
function isEmail (s)
{

var regu = "^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[0-9a-zA-Z]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|com|gov|mil|org|edu|int)$"
var re = new RegExp(regu);
if (s.search(re) != -1) {
return true;
} else {
window.alert ("请输入有效合法的E-mail地址 !")
return false;
}
}
</script>

上面的这段代码,在表单中应该怎么调用!! 是在<form ... onsubmit="return isEmail()">吗 我试了怎么不行????

[此贴子已经被作者于2007-11-3 0:11:58编辑过]

13 回复
#2
madpbpl2007-11-03 00:27

加一句
var s =document.表单名.邮箱名.value;

#3
爱像深蓝2007-11-03 11:20

1. <input type="text" id="txtEmailAddr" value="请输入电子邮件地址" onblur="return isEmail(this.value)" onfocus="this.value = '';"/>
在你的用来输入电子邮件地址的文本框失去焦点时,即onblur事件里 调用 js里的 isEmail()这个方法,将当前指针(所指对象text)的value属性作参数传入,如果此value即你输入的电邮地址合法则反回true,否则弹出对话框,alert()提示出错,并返回false.

2. 当然你也可以把这个方法放在<input type="submit" onclick="return isEmail(document.你表单的ID.txtEmailAddr.value)" value="提交" />这样就会在提交表单之前作检查,如果反回false则不会发生提交的事件!

#4
cainiao1582007-11-03 13:03

感谢二楼的! 问题已经解决!!

<script language="javascript">
function isEmail (s)
{
var s =document.form1.email.value; 原先的时候少了这一句!!!
var regu = "^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[0-9a-zA-Z]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|com|gov|mil|org|edu|int)$"
var re = new RegExp(regu);
if (s.search(re) != -1) {
return true;
} else {
window.alert ("请输入有效合法的E-mail地址 !")
return false;
}
}
</script>
<form id="form1" name="form1" method="post" action="" onsubmit="return isEmail()">
<p>Email:
<input name="email" type="text" size="30" />
</p>
<p>
<label>
<input type="submit" name="Submit" value="提交" />
</label>
</p>
</form>

#5
hmhz2007-11-03 14:31
用的着写那么多吗?这样多简单,正则验证
[CODE]<script language="javascript">
function isEmail(){
if (!document.form1.email.value.match(/^[\w]{1}[\w\.\-_]*@[\w]{1}[\w\-_\.]*\.[\w]{2,4}$/i) ) {
alert ("请输入有效合法的E-mail地址 !");
document.form1.email.focus();}
}
</script>[/CODE]

[此贴子已经被作者于2007-11-3 14:33:03编辑过]

#6
爱像深蓝2007-11-03 18:13
以下是引用hmhz在2007-11-3 14:31:22的发言:
用的着写那么多吗?这样多简单,正则验证
[CODE]<script language="javascript">
function isEmail(){
if (!document.form1.email.value.match(/^[\w]{1}[\w\.\-_]*@[\w]{1}[\w\-_\.]*\.[\w]{2,4}$/i) ) {
alert ("请输入有效合法的E-mail地址 !");
document.form1.email.focus();}
}
</script>[/CODE]

阁下不说话,没有人会把您当作BC!
看阁下也算是长得人模人样,但是阁下的编码能力 so so...
既然是function 加上return的value就是有他的用意!麻烦您多读点书,看看人家微软的例子是怎么写的.别说话不经大脑!
你那个方法没有返回值.validator方法一般都是放在submit按钮的onclick事件上.要不然单纯的alert()一点意义都没有!
再者 focus();//一看就是刚看了几本dom的书,只知道点皮毛就来显的小P孩写出的东西.
如果说没有alert().很容易造成系统假死!.个人建议特别在ajax异步提交时focus()这种得到焦点的方法越少用越好.

#7
multiple19022007-11-03 18:20
吵什么吵。
hmhz给的代码在简洁上做得确实不错。
#8
yms1232007-11-03 20:28
6楼的看来是想纯粹捣乱了,我提醒过了有什么问题好好说,而且版规里已经明确规定严禁人身攻击和谩骂行为,所以在这里提醒6楼注意,再发这样的帖子,我就要对你进行屏蔽了。你在javascript版已经发了多篇,这里对6楼的用户发出警告一次。否则就不要说我没提醒过你了。
#9
hmhz2007-11-03 20:28
唉~~~~ 现在人啊,蓄意诽谤他人对自己有好什么好处?如果我的代码写的不对,你大可以指正,我乐意接受。
我记得我在论坛没得罪过人吧,怎可以使用这样攻击性的语言攻击我呢?

我承认我编程技术太烂,被选上斑竹也是大家的意思,我也乐意帮助他人,不懂的我也跟着学习学习
还在不断的给自己补充营养,能帮助大家的尽量帮忙。

你这么有才华,我很敬佩你的,以后多来论坛也帮助帮助我们不懂的兄弟如何?
#10
爱像深蓝2007-11-03 22:32
以下是引用multiple1902在2007-11-3 18:20:10的发言:
吵什么吵。
hmhz给的代码在简洁上做得确实不错。

在下并不同意这位朋友的观点!

1. 写代码绝对不是要简洁!没有人认为简洁的代码不好,但这并不是目的,请这位朋友不要在这里指目而忘纲.

2. 我们写程序的目的不是为了图自己方便!根本目的是为了在执行效能与不断增长的用户需求之间求取一个平衡点.javascript作为网景公司在上世纪末开发的轻量级脚本语言在诞生之出,就预演着他会出现百花齐放的局面,先不论其ns和ie两大派系,就是以微软所主张的jscript的言,不同的人写出来的执行效能是相差很远的,这位朋友单以代码量的多少来决定此代码的优秀程度是否在武断?

3. 在下承认本人的言语是过激了些.如有冒犯敬请原谅,但是阁下想利用管理者的身份使在下委身求权,阁下可以说是妄想!

在下虽然语言过激但每一句话无不是围绕主题!相反上面有很多贴子,并没有涉及到主题,这样的贴子是否为水贴.但却得不到公平的对待.而相反对在下一个新人,你们几个版主在一个贴中对在下冷嘲热讽又或出言中伤,甚至利用马甲对在下进行人生攻击!难道这就是贵论坛的待客之道吗?在下也阅读过一些法律书籍,如果说贵坛不能给在下一个满意的答复,在下再次声明:将保留向贵论坛提起民事诉讼的权利!人做错了事就要对自己负责,如是在下犯错,在下自是承担,但在下受到几位贵坛版主的"如此礼遇"在下必当铭记于心!

#11
madpbpl2007-11-04 14:57

论坛对个人来说是个很好的学习地方,尤其是在这个论坛,我觉得是自己见过的人气最旺,也是版主最负责的论坛。
1.对“爱像深蓝”,个人认为你的水平不错,至少比我强之多多。我更希望的是你把自己的不同观点或解法写出来,让大家来学习更有效的解决问题方法。
2.这个论坛的选举版主的规则是什么呢?恐怕“爱像深蓝”你不清楚吧,这个论坛会在每个月定期由论坛里的人来投票选举版主,而版主的候选名是从当月发贴中挑选出来的(具体怎么选我不太清楚),既然被大家选出来,就是被大家认可的,即热心,也在某一方面有点长处的吧。如果他没有什么能力,只是说一些空话,或是写一些无用的程序,或是冗长的程序,我相信大家也不会认可他的,群众的眼光还是雪亮的。
3.论坛是个技术交流的地方,大家也都希望在这个家园能够很好的交流技术。但是可能各个的水平不同,所以回答问题的程度不同。就我来说,我是碰到自己会的问题就去回答,不会的如果自己有时间的话自己就把程序下到本机调试,调试成功再把自己的答案附上,也许不是最好的,但是自己的解决方法。个人学编程不久,也就是今年3月后开始,水平不高,技术很菜,但是也尽自己的力把这个认为最发的论坛搞的更有人气。
4.什么方法是更好的?答:能解决问题的方法就是最好的!
5.“爱我深蓝”,对我来说,很喜欢你解决问题的思路,看了你的一些解法开阔了我的思路,在这先谢谢你。但是个人不赞成你的一些过激的话,因为每个人都有初学的时候,如果他当初学习的时候,别人对他一顿臭扁,说他没用,可能会对他的学习心态有所影响,甚至很让他丧失学习的动力。(也许你会说,是他自己的心态不好,没有一点承受力)但是这种行为我只赞成一半,因为今后的生活压力会越来越大的,我们面对的竞争也会越来越残酷,所以必须加强我们的生存能力,这是很重要的!但是缓和点的说法更能让人接受,你说呢?“爱我深蓝”!
本人语文水平很烂,想到哪写到哪的,可能没什么思路,见谅!

#12
cainiao1582007-11-04 18:11

希望大家以后和睦相处!

#13
天涯听雨2007-11-04 18:24
//检查E-mail的输入是否合法
function ismail(mail)
{
return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail));
}

if(document.form1.UserMail.value)==""||!ismail(document.form1.UserMail.value))
{
window.alert("请输入你的电子邮箱(E-mail),且必需正确进行输入。");
document.form1.UserMail.focus();
return false;
}
#14
hmhz2007-11-04 20:10
楼上的,判断mail是否为空是多余的,因为为空就已经属于mail格式不对的范围内了
所以只要个 if (!ismail(document.form1.UserMail.value)) {} 就够了
return false; 返回值这里根本不需要加的,因为js 代码到这里就已经没有了,所以这里可以不需要return false;来特意终止了
所以这里直接这样
<script language="javascript">
function isEmail(){
if (!document.form1.email.value.match(/^[\w]{1}[\w\.\-_]*@[\w]{1}[\w\-_\.]*\.[\w]{2,4}$/i) ) {
alert ("请输入有效合法的E-mail地址 !");
document.form1.email.focus();}
}
</script>
这样判断是最好的方式
1