Thursday 15 July 2010

javascript - Something strange about regular expression -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 4 जवाब
  • कहें कि मेरे पास निम्न नियमित अभिव्यक्ति कोड है:
      var str = "{$ (var i के लिए $)     = 0, लेन = ओ। लांघी; i & lt; len; i ++) {$} "; Var reg = /\{\$(.*?)\$\}/g; console.log (reg.test (एसटीआर)); console.log (reg.test (एसटीआर)); console.log (reg.test (एसटीआर));   

    इसका परिणाम सच्चा और गलत क्यों होता है?

    प्रति:

    जब आप जानना चाहते हैं कि कोई स्ट्रिंग स्ट्रिंग में पाई जाती है तो टेस्ट विधि का उपयोग करें (String.search विधि के समान); अधिक जानकारी के लिए (लेकिन धीमा निष्पादन) exec विधि का उपयोग करें (String.match विधि के समान) जैसा कि exec (या इसके साथ संयोजन में) के साथ, एक ही वैश्विक नियमित अभिव्यक्ति उदाहरण पर कई बार कॉल किया गया परीक्षण पिछले मैच से पहले बढ़ जाएगा।

    हो रहा है, हम उपयोग कर सकते हैं और देखें कि क्या हो रहा है। पास के क्रम में:

    1. मूल स्ट्रिंग (सच्चाई)
      पूरी स्ट्रिंग मिलान की गई है जिसे सही के रूप में मूल्यांकन किया गया है।
    2. निरर्थक (फाल्सी)
      लगातार कॉल जारी है, इसलिए जब पहले कॉल ने पूरे परिणाम वापस किया, हम null के साथ छोड़ दिया जाता है।
    3. मूल स्ट्रिंग (सच्चाई)
      और पैटर्न शुरू करने के लिए वापस आता है और चालू रहता है।

      सबूत के लिए,:

        var str = '{$ For (var i = 0, लेन = ओ। लैंघट; i & lt; len; i ++) {$}'; Var reg = /\{\$(.*?)\$\}/g; के लिए (var i = 0; i & lt; 3; i ++) {var परिणाम = reg.exec (str); console.log (परिणाम); console.log (!! परिणाम); }    

No comments:

Post a Comment