मैं url- एन्कोडेड स्ट्रिंग्स को पार्स करने का प्रयास कर रहा हूं जो कि &या तो अलग किए गए कुंजी = मूल्य जोड़े से बना है &।
निम्नलिखित केवल पहली घटना से मेल खाएगा, अलग-अलग परिणाम तत्वों में कुंजियों और मूल्यों को तोड़कर:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/)
स्ट्रिंग '1111342 = एडम% 20Franco & 348572 = बॉब% 20Jones' के परिणाम इस प्रकार होंगे:
['1111342', 'Adam%20Franco']
वैश्विक ध्वज का उपयोग करते हुए, 'g', सभी घटनाओं से मेल खाएगा, लेकिन केवल पूरी तरह से मिलान किए गए उप-स्ट्रिंग्स को लौटाएगा, न कि अलग-अलग कुंजियों और मूल्यों को:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/g)
स्ट्रिंग '1111342 = एडम% 20Franco & 348572 = बॉब% 20Jones' के परिणाम इस प्रकार होंगे:
['1111342=Adam%20Franco', '&348572=Bob%20Jones']
हालांकि मैं स्ट्रिंग को &अलग-अलग विभाजित कर सकता हूं और प्रत्येक कुंजी / मूल्य जोड़ी को अलग-अलग तोड़ सकता हूं , क्या /(?:&|&)?([^=]+)=([^&]+)/PHP के preg_match_all()फ़ंक्शन के समान पैटर्न की कई घटनाओं से मेल खाने के लिए जावास्क्रिप्ट की नियमित अभिव्यक्ति समर्थन का उपयोग करने का कोई तरीका है ?
मैं उप-मैचों के साथ परिणाम प्राप्त करने के लिए किसी तरह लक्ष्य कर रहा हूं जैसे:
[['1111342', '348572'], ['Adam%20Franco', 'Bob%20Jones']]
या
[['1111342', 'Adam%20Franco'], ['348572', 'Bob%20Jones']]
replaceयहां उपयोग करने की सिफारिश नहीं की है।var data = {}; mystring.replace(/(?:&|&)?([^=]+)=([^&]+)/g, function(a,b,c,d) { data[c] = d; });किया हुआ। जावास्क्रिप्ट में "matchAll" एक स्ट्रिंग के बजाय एक प्रतिस्थापन हैंडलर फ़ंक्शन के साथ "प्रतिस्थापित" है।