2012-02-11 126 views
0

有人可以重写这个JavaScript。现在的问题是,1个正则表达式是唯一的工作(从电子邮件中的一个)Javascript的正则表达式不工作

前面的问题:link 我建议这里,但我想我把它不好的在我的代码

function checkform (form) 
{ 
    var rex = /[^a-z]/i; 
    var regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 

    if (!regex.test(form.email.value)) 
    { 
     alert("Please enter youre valid email address."); 
     form.email.focus(); 
     return false ; 
    } 

    if (rex.test(form.name.value)) 
    { 
     alert("Please enter your name. no numbers or #$^& things allowed)."); 
     form.name.focus(); 
     return false ; 
    } 

    return true ; 
} 
+1

什么不正常? '/ [^ a-z]/i'模式应该匹配任何非alpha字符。你用什么输入来测试? – 2012-02-11 22:02:27

+0

请阅读下面的内容:http://stackoverflow.com/questions/46155/validate-email-address-in-javascript – cha0site 2012-02-11 22:07:54

+0

你应该删除最后一个+后面的'([a-zA-Z0-9] {2,4 })+'tld-block,因为它可以让你基本上有任何大于2个字符的tld后缀。但除此之外,不应该有问题。顺便说一句,即使你的RegExp应该满足大多数需求,以防万一你想看看_real_电子邮件验证RegExp,你可以在[本页](http://www.ex-parrot.com/pdw/ Mail-RFC822-Address.html) – Tharabas 2012-02-11 22:16:17

回答

0

假设你希望两个表单字段的行为方式相同,第一个被测试为阴性。

你说的电子邮件一个作品,所以也许你的意思是写if (! rex.test(for.name.value))

-1

这个怎么样。

"^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$" 
+0

OP说他的电子邮件RegEx正在工作 – 2012-02-11 22:08:00

+0

我现在正在测试所有的东西 – JochemQuery 2012-02-11 22:15:19