Replace function in javascript is not consistent when function is provided as then second parameter -


  फ़ंक्शन function1 (format) {var regexp = / [[lt; & gt;] / g; // यहां पैरामीटर मिलान किए गए स्ट्रिंग, // स्थिति और मूल पाठ var str = format.replace (regexp, फ़ंक्शन (मैच, स्थिति, मूल पाठ) {वापसी मैच;}); वापसी str; } फ़ंक्शन function2 (प्रारूप) {var regexp = /: (\ w +) / g; // यहाँ पैरामीटर स्ट्रिंग से मेल खाते हैं, // स्ट्रिप स्ट्रिंग की तरह कुछ, और स्थिति var str = format.replace (regexp, फ़ंक्शन (मैच, छीन लिया, स्थिति) {वापसी मैच;}); वापसी str; } Console.log (function1 ('& lt; हैलो & gt;')); Console.log (function2 (': url: विधि'));   

मुझे वेब डेवलपर्स # के लिए # व्यावसायिक जावास्क्रिप्ट से पहला कार्य मिला, और #NodeJS में एक्शन # से दूसरे फ़ंक्शन को मिला। आप देख सकते हैं कि प्रतिस्थापन के लिए कॉल बैक फ़ंक्शन सुसंगत नहीं है। क्यों?

कॉलबैक function2 में 4 वां तर्क के साथ लिखा जा सकता है आपके उदाहरणों में पहले कॉलबैक के साथ कम भ्रमित और अधिक सुसंगत प्रकट होता है:

  फ़ंक्शन function2 (format) {var regexp = /: (w /) / g; Var str = format.replace (regexp, फ़ंक्शन (मैच, सबबैक, स्थिति, मूल पाठ) {वापसी मैच;}); वापसी str; }   

देखें कि कैसे कॉलबैक को प्रतिस्थापित किया जा सकता है: यह & gt; = 3 के कई तर्कों को स्वीकार करता है वैकल्पिक तर्क केवल तभी उपयोग किए जाते हैं यदि आपके regex में submatches शामिल होते हैं, और वे nth कोष्ठकयुक्त पाइप स्ट्रिंग के अनुरूप होते हैं:

  फ़ंक्शन (मैच, [पी 1, पी 2, .. ।], ऑफसेट, स्ट्रिंग) {...}   

Whats भ्रामक लगता है, मुझे लगता है, वे बीच में रखा जाता है यह भी ध्यान रखें कि प्रत्येक पूर्ण मिलान के लिए कॉलबैक फ़ंक्शन को कई बार लागू किया जाएगा, यदि पहले पैरामीटर में नियमित अभिव्यक्ति वैश्विक है (जो आपके उदाहरण में सच है)।

Comments

Popular posts from this blog

Out of index C/C++ -

regex - PatternSyntaxException: while using String.ReplaceAll function in java? -

java - Projects which are accessed via multiple (different) IDEs: Ant or Maven? -