यदि आपका रेगेक्स वैश्विक है, और आप कब्जा कर रहे हैं, तो आपको निष्पादन का उपयोग करना होगा। मैच आपके सभी कैप्चर को वापस नहीं करेगा।
जब मिलान हो रहा हो (कैप्चरिंग नहीं हो) तो मैच बहुत अच्छा काम करता है। आप इसे एक बार चलाते हैं और यह सभी मैचों की एक सरणी देता है। (हालांकि अगर रेगेक्स वैश्विक नहीं है, तो मैच मैच दिखाएगा और उसके बाद कब्जा कर लेगा)
जब आप कैप्चर कर रहे होते हैं, तब Exec का उपयोग करते हैं, और हर बार इसे निष्पादित करने पर यह मैच देता है, इसके बाद कैप्चर करता है। (मैच पूर्ण मैच देने के बाद कैप्टेंसी का व्यवहार करेगा, केवल तभी जब रेक्सक्स वैश्विक नहीं होगा)।
Exec के साथ एक और उपयोग, एक मैच का सूचकांक या स्थिति प्राप्त कर रहा है। जब आपके पास अपने रेगेक्स के लिए एक चर होता है, तो आप .lastIndex का उपयोग कर सकते हैं और मिलान की स्थिति प्राप्त कर सकते हैं। एक रेगेक्स ऑब्जेक्ट में .lastIndex, और रेगेक्स ऑब्जेक्ट है जो आप करते हैं। डॉट मैच एक स्ट्रिंग पर किया जाता है और आप तब regex ऑब्जेक्ट डॉट lastIndex नहीं कर पाएंगे
एक स्ट्रिंग में, मैच फंक्शन होता है, जिसे एक रेगेक्स पास किया जाता है। और एक रेगेक्स, में निष्पादन फ़ंक्शन होता है, और एक स्ट्रिंग पारित किया जाता है
आप कई बार चलाते हैं। मैच आप एक बार चलाएं
मैच का उपयोग करना अच्छा है जब कैप्चरिंग नहीं है और जब आप कैप्चर कर रहे हैं तो निष्पादन का उपयोग कर सकते हैं जो अधिक शक्तिशाली है क्योंकि यह कैप्चर करने के लिए अच्छा है, लेकिन यदि आप कैप्चर करते समय मैच का उपयोग करते हैं, तो देखें कि यह कैप्चर दिखाता है जब रेगेक्स वैश्विक नहीं है, लेकिन doesn जब regex वैश्विक है, तो शो कैप्चर नहीं होता है।
> "azb".match(/a(z)b/);
[ "azb", "z" ]
> "azb".match(/a(z)b/g);
[ "azb" ]
>
एक और बात यह है कि यदि आप निष्पादन का उपयोग करते हैं, तो ध्यान दें कि रेगेक्स पर कॉल किया जाता है, तो यदि आपने रेगेक्स के लिए एक चर का उपयोग किया है, तो आप अधिक शक्ति प्राप्त करेंगे
जब आप रेगेक्स के लिए वैरिएबल का उपयोग नहीं करते हैं, तो आपको मैच नहीं मिलते हैं, इसलिए रेग्ज के लिए वैरिएबल का उपयोग करें, जब निष्पादन का उपयोग करें
> /./g.exec("abc")
[ "a" ]
> /./g.exec("abc")
[ "a" ]
> /./g.exec("abc")
[ "a" ]
>
> /[a-c]/g.exec("abc")
[ "a" ]
> /[a-c]/g.exec("abc")
[ "a" ]
>
> var r=/[a-c]/g
> r.exec("abc")
[ "a" ]
> r.exec("abc")
[ "b" ]
> r.exec("abc")
[ "c" ]
> r.exec("abc")
null
>
और निष्पादन के साथ, आप मैच का "इंडेक्स" प्राप्त कर सकते हैं
> var r=/T/g
> r.exec("qTqqqTqqTq");
[ "T" ]
> r.lastIndex
2
> r.exec("qTqqqTqqTq");
[ "T" ]
> r.lastIndex
6
> r.exec("qTqqqTqqTq");
[ "T" ]
> r.lastIndex
9
> r.exec("qTqqqTqqTq");
null
> r.lastIndex
0
>
इसलिए यदि आप इंडेक्स या कैप्चरिंग चाहते हैं, तो निष्पादन का उपयोग करें (ध्यान रखें कि जैसा कि आप देख सकते हैं, "इंडेक्स" के साथ, "इंडेक्स" जो इसे देता है वह वास्तव में एक nth घटना है, यह 1 से गिना जा रहा है। इसलिए आप उचित प्राप्त कर सकते हैं) सूचकांक घटाकर 1. और जैसा कि आप देख सकते हैं यह 0 देता है - 0 के अंतिम बिंदु - नहीं मिला है)।
और यदि आप मैच को फैलाना चाहते हैं, तो जब आप कैप्चर कर रहे हों, तब इसका उपयोग कर सकते हैं, लेकिन रेगेक्स के ग्लोबल होने पर, और जब आप इसके लिए करते हैं, तब ऐरे की सामग्री सभी मैच नहीं होती हैं, लेकिन पूर्ण होती हैं कैप्चर के बाद मैच।
execसभी उप-चयन प्राप्त करने के लिए लूप करते हैं ।