2012-12-11 54 views
5

मैं सच में समझ में क्यों निम्नलिखित कोड does not को regexpattern.test, एक समारोह

$val = "12/11/2012"; 
$opts = {"rule" : "required|format", "format" : {"pattern" : /^\d{1,2}\/\d{1,2}\/\d{4}$/, "errorMsg" : "Invalid date. Allowed allowed: mm/dd/yyyy"}}; 

if(rule=="format" && typeof $opts.format.pattern==="string") { 
    try { 
     var pattern = (typeof $opts.format.pattern==="object") ? $opts.format.pattern : new Regex($opts.format.pattern, "g"); 
     if(pattern.test($val)) { // $val contains 12/11/2012 
      alert("Invalid Date!"); // Shows invalid format 
     } 
    } catch(err){ 
     alert(err.message); // shows pattern.test is not a function 
    } 
} 
+6

ठीक काम करने के लिए जब http://jsbin.com/uviwic/2/edit पृथक लगता है। समस्या कहीं और होनी चाहिए ... – elclanrs

+0

स्थिति में जोड़ने का प्रयास करें, 'अगर (पैटर्न &&! Pattern.test ($ val)) '। शायद 'RegExp' ऑब्जेक्ट किसी कारण से संकलित नहीं हुआ था। –

+0

क्या आपके पास 'pattern' ऑब्जेक्ट में पहले से मौजूद 'test' प्रॉपर्टी है? – adeneo

उत्तर

1

से मेल समस्या यह है कि $opts.format.pattern एक स्ट्रिंग नहीं है न नहीं है, यह एक रेगुलर एक्सप्रेशन से वस्तु है।

तो यह काम करेगा:

var $val = "12/11/2012"; 
var $opts = {"rule" : "required|format", "format" : {"pattern" : /^\d{1,2}\/\d{1,2}\/\d{4}$/, "errorMsg" : "Invalid date. Allowed allowed: mm/dd/yyyy"}}; 

if ($opts.format.pattern instanceof RegExp) { 
    try { 
    var pattern = $opts.format.pattern; 
    if(!pattern.test($val)) { 
     alert("Invalid date"); 
    } else { 
     alert("Valid date"); 
    } 
    } catch(err){ 
    alert(err.message); // shows pattern.test is not a function 
    } 
} 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^