2012-10-19 175 views
-2

任何人都可以幫助我與正則表達式驗證。日期格式的正則表達式

我想出了要求在我的日期輸入可以是

mm/dd/yyyy 
mm/dd/yy 
m/d/yyyy 
m/d/yy 

我的正則表達式應該支持所有四種可能性。

請幫我這個。

在此先感謝。

是的,它必須檢查有效日期。

這是我的代碼,它通過正則表達式驗證後檢查有效日期。

$.validator.addMethod("ValidDate", function(value,element) { 
      var result = true; 
      if($('#'+element.id).val() != "") 
      { 
       var reg = new RegExp("regexcode"); 
       if (!reg.test($('#'+element.id).val())) 
       { 
       result = false; 
       } 
      } 
      if(result == true) 
      { 
      $("#"+element.id).datepicker("option", 'mm/dd/yy', $("#"+element.id).val());} 
      return result; 
      },"Please enter valid date."); 
+1

你有什麼試過?另外,看看這個:http://www.regular-expressions.info/dates.html –

+0

驗證應該有多廣泛?是否需要檢查它是否是有效的日期,即每月正確的天數限制和閏年考慮? – Guffa

+0

除非你想要一個處理所有閏年規則等的*可惡的*大正則表達式,否則最好通過嘗試轉換爲真正的日期來進行驗證。 –

回答

0
/(0?[1-9]|1[0-2])\/(0?[1-9]|[12]\d|3[01])\/([12]\d{3}|\d\d)/ 
0

試試這個:

/[0-9]{1,2}[/][0-9]{1,2}[/][0-9]{1,4}/ 

這樣可以使正則表達式簡單,易於修改。然後,您可以單獨驗證輸入的日期,月份和年份的值(例如,年份是否在1900到2099年等)。

0

我最近需要正確匹配美國式m/d/y日期的正則表達式。我構建了一個類似於下面的正則表達式,正確地匹配了從1900年到2099年的所有日期,包括所有閏年。我不需要提取匹配,所以這個正則表達式不能用於從日期提取數字。

被警告,這個正則表達式是相當可惡的,它的使用可能會損害你的聲譽。同時謹防錯誤。我從記憶中重構了下面的內容。

/^((((0?[13578]|1[02])\/([012]?[1-9]|[12]0|3[01])|(0?[469]|11)\/([012]?[1-9]|[123]0)|0?2\/(0?[1-9]|1[0-9]|2[0-8]))\/(19|20)?[0-9]{2})|((0?2\/29\/((19|20)?(0[48]|[2468][048]|[13579][26])|1900))))$/ 

我邀請其他人改進它,因爲我知道它有缺點。

但是我會指出,如果你正在考慮使用這個正則表達式,你應該認真考慮嘗試解析日期。大多數瀏覽器都提供了Date對象的擴展,它可以解析日期,並在字符串表示不正確的日期時拋出異常。它還將處理比這更多類型的日期格式。

0

你可以使用ajax的MaskValidator來驗證日期,它非常易於使用