2014-11-02 119 views
-1

我有一个表单,会要求用户输入他们的姓名和他们的学校电子邮件。该脚本设置为仅允许@ msu.edu电子邮件,但我希望它能够通过.edu电子邮件接收任何电子邮件。设置一个表格只允许.edu电子邮件地址

function send() { 
     var regex = /^([\w-]+(?:\.[\w-]+)*)@msu\.edu/i; 
     var fname = $("#fname").val(); 
     var lname = $("#lname").val(); 
     var email = $("#email").val(); 
     if(fname != "" && lname != "") { 
      if(regex.test(email)) { 
       var newUser = new Parse.Object("StartupRegister"); 
       newUser.save({ 
         fname: fname, 
         lname: lname, 
         email: email 
        },{ 
         success: function(user) { 
          window.location = "msu_form.php"; 
         }, error: function(user, error) { 

         } 
        }); 
      } else { 
       alert("Not an MSU email."); 
      } 
     } else { 
      alert("You must enter your name."); 
     } 
    } 

</script> 
+0

你尝试过什么来解决这个?为什么它不适合你?结果是什么?预期的结果是什么?你在哪里陷入特定? – PeeHaa 2014-11-02 18:08:46

回答

-1

下面是一个简单的算法,您可以使用:

1,您可以创建简单的函数来检查电子邮件地址是否有效

2-比赛从电子邮件地址结束对字符串“埃杜”

现实世界的例子:

function validateEmail(email) { 
    var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
    if(!emailReg.test(email)) { 
    return false; 
    } else { 
    return true; 
    } 
} 

先前的功能是:email-validation-using-jquery

function checkEdu(email){ 
    return (email.substr(-4) == '.edu'); 
} 

这里的好处是,你有,你可以在其他项目

和checkEdu函数,它是专门针对这种情况下使用validateEmail功能

注:

SUBSTR(开始,长度):开始索引处开始,并采取长度茶racter

SUBSTR( - 长度):从年底开始,采取长字符

+0

'validateEmail'函数是错误的。例如,它说'postmaster @ smithsonian.museum'是无效的。 – icktoofay 2014-11-02 19:30:29

+0

是的,要解决这个简单的问题,只需用{2}替换{2,4}或任何其他你想要的数字} – Ismail 2014-11-02 20:56:38

+0

这只是它出错的冰山一角。下一个最坏的例子是它拒绝了'john + doe @ example.com'。直到最终得到[这个正则表达式](http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html),它会拒绝有效的电子邮件地址,并且很可能会接受无效的电子邮件地址。即使使用正则表达式,输入也需要预处理,因为电子邮件地址的语法是上下文无关的,从根本上***不能与正则表达式匹配。 – icktoofay 2014-11-02 21:08:02

0

更改您的正则表达式的msu部分(?:[\w]+\.)+所以它看起来像:

var regex = /^([\w-]+(?:\.[\w-]+)*)@(?:[\w-]+\.)+edu/i; 
相关问题