2013-02-11 31 views
3

我已經嘗試在asp.net mvc的驗證電子郵件類似下面用jQuery像下面編譯錯誤使用jQuery的正則表達式時的表情在ASP.NET MVC

<script type="text/javascript"> 
    function validateEmail(sEmail) { 
    var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; 
    if (filter.test(sEmail)) { 
     return true; 
    } 
    else { 
     return false; 
    } 
     $(document).ready(function() { 
    $('#create').click(function() { 
     var sEmail = $('#UserName').val(); 
     if ($.trim(sEmail).length == 0) { 
      alert('Please enter valid email address'); 
      e.preventDefault(); 
     } 
     if (validateEmail(sEmail)) { 
      alert('Email is valid'); 
     } 
     else { 
      alert('Invalid Email Address'); 
      e.preventDefault(); 
     } 
    }); 
}); 
    }); 
</script> 

雖然渲染我得到的編譯錯誤視圖意想不到的字符'\'在那正則表達式pression.How我可以解決這個錯誤?

+0

你只是混合功能,請sepatate它的document.ready()和validateEmail() – 2013-02-11 15:25:19

+0

您是否嘗試過使用正則表達式,過濾器=新的RegExp(對象符號圖案,改性劑);而不是文字記法filter =/pattern/ – 2013-02-11 15:26:57

+0

我已經分離了函數和document.ready,現在我得到了同樣的錯誤。 – JEMI 2013-02-11 15:28:41

回答

9

我有同樣的錯誤。 Here是答案。這個對我有用。需要使用@@而不是@。

你的情況是:

var filter = /^([\w-\.]+)@@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; 
0

你的大括號裏有些怪異。具體而言,您沒有正確關閉validateEmail功能。以下是更正後的Javascript代碼:

function validateEmail(sEmail) { 
     var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; 
     if (filter.test(sEmail)) { 
      return true; 
     } 
     else { 
      return false; 
     } 
    } 
    $(document).ready(function() { 

     $('#create').click(function() { 
      var sEmail = $('#UserName').val(); 
      if ($.trim(sEmail).length == 0) { 
       alert('Please enter valid email address'); 
       e.preventDefault(); 
      } 
      if (validateEmail(sEmail)) { 
       alert('Email is valid'); 
      } 
      else { 
       alert('Invalid Email Address'); 
       e.preventDefault(); 
      } 
     }); 
    }); 

編輯:另外,不相關的,則可以使該validateEmail功能更簡潔一點,因爲測試返回一個布爾值。如下所示:

function validateEmail(sEmail) { 
     var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; 

     return filter.test(sEmail); 
    } 
+0

我試過這個,但是我得到了同樣的編譯錯誤。我認爲javascript錯誤不會產生任何編譯錯誤。 – JEMI 2013-02-11 15:30:10

+0

這是Javascript,不涉及編譯。事實上,我不知道爲什麼這是標記爲ASP.net MVC。這只是一個Javascript和jQuery的問題。 – jamesmillerio 2013-02-11 15:32:43

+0

Never.this錯誤是由.net生成的。這就是編譯錯誤在運行時產生的原因 – JEMI 2013-02-11 15:34:37