2011-06-29 16 views
12

मैं निम्नलिखित जावास्क्रिप्ट कोड है:जावास्क्रिप्ट रेगुलर एक्सप्रेशन से काम नहीं कर रहा

function checkLegalYear() { 
     var val = "02/2010"; 

     if (val != '') { 
      var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g"); 

      if (regEx.test(val)) { 
       //do something 
      } 
      else { 
       //do something 
      } 
     } 
    } 

लेकिन, मेरा regex परीक्षण हमेशा किसी भी मूल्य मैं पारित (02/2010) के लिए झूठी देता है। क्या मेरे कोड में कुछ गड़बड़ है? मैंने इस कोड को विभिन्न जावास्क्रिप्ट संपादकों पर ऑनलाइन करने की कोशिश की है और यह ठीक काम करता है।

उत्तर

32

क्योंकि आप एक स्ट्रिंग से अपने रेगुलर एक्सप्रेशन बना रहे हैं, तो आप दोगुना-अप करने के लिए अपने बैकस्लैश है:

var regEx = /^(0[1-9]|1[0-2])\/\d{4}$/g; 
:

var regEx = new RegExp("^(0[1-9]|1[0-2])/\\d{4}$", "g"); 

वहाँ वास्तव में कोई कारण नहीं है यहाँ नहीं बजाय नियमित अभिव्यक्ति सिंटैक्स का उपयोग करने के लिए

संपादित करें — मुझे यह भी पता है कि एक एम्बेडेड "/" वर्ण है, जिसे आप रेगेक्स सिंटैक्स का उपयोग करते हैं, जिसे उद्धृत किया जाना है।

+0

एक आकर्षण की तरह काम करता है, बहुत बहुत धन्यवाद; समय सीमा समाप्त होने पर स्वीकार करेंगे। – mint

+0

दूसरा समाधान गलत है, कि/भागने की जरूरत है। '... 0-2]) \/\ d {4 ...' – epascarello

+0

पहले ही संपादित किया गया है, @epascarello, लेकिन धन्यवाद :-) – Pointy

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