2013-08-06 38 views
0

我有一個自定義的正則表達式的方法來工作:無法獲取jQuery驗證與MM/DD/YYYY

$.validator.addMethod(
    "dateRegex", 
     function(value, element, regexp) { 
     var re = new RegExp(regexp); 
     return this.optional(element) || re.test(value); 
     }, 
     "Date must be in the format MM/DD/YYYY" 
); 

我有一個日期字段,看起來像這樣jQuery驗證:

rules: 
     date: 
     { 
     required: true, 
     dateRegex: '^(0[1-9]|1[012])[- //.](0[1-9]|[12][0-9]|3[01])[- //.](19|20)\d\d$', 
     maxlength: 10 
     } 
     } 
messages: { 
    lossDate: { 
    required: "Unable to proceed, search field is empty" 
    } 
} 

當我輸入有效日期時,例如08/06/2013,顯示「日期格式爲MM/DD/YYYY」。有沒有人看到我的正則表達式的錯誤,或者是外面的問題?此外http://regexpal.com/

,我在我的應用程序下面的工作:

測試數據通過這裏

$.validator.addMethod(
    "regex", 
    function(value, element, regexp) { 
     var re = new RegExp(regexp); 
     return this.optional(element) || re.test(value); 
    }, 
    "Invalid number of characters entered." 
); 

number: 
     { 
    required: true, 
    regex: '^(.{7}|.{9}|.{11}|.{12}|.{15})$' 
     },... 
+0

看起來你需要用零前面的值。 '08/06/2013' – Sparky

+0

@ Sparky,謝謝你指出。這是一個錯字。驗證仍然返回false與零。 –

回答

3

我想這插件不希望對正則表達式的字符串。相反,一個字符串的,把regex literal

…, 
dateRegex: /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d$/, 
… 

您也可以簡化,則函數:

function(value, element, regexp) { 
    return this.optional(element) || regexp.test(value); 
} 
+0

我希望這很容易。我有一個不同版本的工作相同的東西。我已將它添加到我的問題中。 –

+0

用你的字符串,'「\ d」'中的反斜槓不會漏掉任何東西。那麼'new RegExp'會匹配一個文字'd'。嘗試輸入'08/06/20dd' – Bergi

+0

我很抱歉,你對沒有接受字符串的插件是正確的。我想這是因爲我傳遞了一個Date類型。你同意嗎? –