Why does inverting a global regex always return true in JavaScript -
नमूना कोड
यह विज्ञापित के रूप में कार्य करता है:
< पूर्व> var re = / abc /; re.test ( "abc"); // सच! Re.test ("abc"); //असत्य;
यह नहीं है:
var re2 = / abc / g; // अपरिभाषित re2.test ("abc"); // सच! Re2.test ("abc");
क्या देता है?
मैंने इसे कई regex के साथ परीक्षण किया है और ऐसा लगता है कि से: परीक्षा का उपयोग करें () जब भी आप यह जानना चाहते हैं कि कोई स्ट्रिंग स्ट्रिंग में मिलती है या नहीं (स्ट्रिंग.सर्च विधि के समान); अधिक जानकारी के लिए (लेकिन धीमा निष्पादन) exec विधि का उपयोग करें (String.match विधि के समान) जैसा कि exec (या इसके साथ संयोजन में) के रूप में, एक ही वैश्विक नियमित अभिव्यक्ति उदाहरण पर परीक्षण कई बार कहा जाता है, पिछले मैच से पहले अग्रिम होगा। तो, यह जब तक आप स्पष्ट रूप से इस क्षमता का उपयोग करने की कोशिश नहीं कर रहे हैं, तो आप संभवत: / g
ध्वज सभी "पाठ">
जी फ्लैग प्रत्येक क्रमिक कॉल पर
.test ()
प्रत्येक मैच में इसे आगे बढ़ाता है (जैसे .exec ()
) के समान स्ट्रिंग के माध्यम से आगे बढ़ेगा। पिछले इंडैक्स
नामक रीगेक्स की संपत्ति को संशोधित करके करता है, जो अगले .test ()
ऑपरेशन को बताता है, जहां उसे खोजना प्रारंभ करना चाहिए स्ट्रिंग अगली बार जब regex उपयोग किया जाता है (कुछ विधियों के साथ) यह जी झंडा है जो कि
.lastIndex
संपत्ति का उपयोग करने के लिए regex को बताता है। उस ध्वज के बिना, उस संपत्ति का उपयोग नहीं किया जाता है उस संपत्ति को मैन्युअल रूप से 0
पर वापस सेट किया जा सकता है, लेकिन अगर आप केवल g
ध्वज को निकालते हैं, तो आपको इसके बारे में चिंता करने की ज़रूरत नहीं है। g
ध्वज के साथ .test ()
का उपयोग नहीं करना चाहते हैं।
Comments
Post a Comment