2014-11-02 53 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; 
相關問題