जवाबों:
gवैश्विक खोज के लिए है। मतलब यह सभी घटनाओं से मेल खाएगा। आप आमतौर पर यह भी देखेंगे iकि किस मामले की अनदेखी करें।
संदर्भ: वैश्विक - जावास्क्रिप्ट | MDN
"जी" ध्वज इंगित करता है कि एक स्ट्रिंग में सभी संभावित मैचों के खिलाफ नियमित अभिव्यक्ति का परीक्षण किया जाना चाहिए।
gध्वज के बिना , यह केवल पहली बार परीक्षण करेगा।
var r = /a/g; console.log(r.test('a'), r.test('a')); // true false
समझाने के लिए जावास्क्रिप्ट में उदाहरण:
> 'aaa'.match(/a/g)
[ 'a', 'a', 'a' ]
> 'aaa'.match(/a/)
[ 'a', index: 0, input: 'aaa' ]
g वैश्विक खोज ध्वज है।
वैश्विक खोज ध्वज, RegExp को स्ट्रिंग के दौरान एक पैटर्न के लिए खोज करता है, सभी घटनाओं की एक सरणी बनाता है जो दिए गए पैटर्न से मेल खा सकता है।
के बीच का अंतर तो /.+/gऔर /.+/ वह यह है कि gसंस्करण सिर्फ पहली के बजाय हर घटना मिल जाएगा।
जैसा कि @matiska ने बताया, gझंडा lastIndexसंपत्ति को भी निर्धारित करता है ।
इसका एक बहुत महत्वपूर्ण दुष्प्रभाव यह है कि यदि आप मिलान स्ट्रिंग के खिलाफ उसी रेगेक्स उदाहरण का पुन: उपयोग कर रहे हैं, तो यह अंततः विफल हो जाएगा क्योंकि यह केवल खोज करना शुरू कर देता है lastIndex।
// regular regex
const regex = /foo/;
// same regex with global flag
const regexG = /foo/g;
const str = " foo foo foo ";
const test = (r) => console.log(
r,
r.lastIndex,
r.test(str),
r.lastIndex
);
// Test the normal one 4 times (success)
test(regex);
test(regex);
test(regex);
test(regex);
// Test the global one 4 times
// (3 passes and a fail)
test(regexG);
test(regexG);
test(regexG);
test(regexG);
gध्वज के अर्थ के अनुसार , यह regexp.lastIndexसंपत्ति को प्रभावित करता है:
LastIndex नियमित अभिव्यक्ति उदाहरणों का एक पढ़ा / लिखा पूर्णांक गुण है जो उस सूचकांक को निर्दिष्ट करता है जिस पर अगला मैच शुरू होता है। (...) यह गुण केवल तभी सेट किया जाता है जब नियमित अभिव्यक्ति उदाहरण वैश्विक खोज को इंगित करने के लिए "g" ध्वज का उपयोग करता है।
संदर्भ: मोज़िला डेवलपर नेटवर्क
नियमित अभिव्यक्ति में जी एक वैश्विक खोज को परिभाषित करता है, जिसका अर्थ है कि यह सभी लाइनों पर सभी उदाहरणों के लिए खोज करेगा।
g -> सभी मैच लौटाता हैwithout g -> पहला मैच लौटायाउदाहरण:
'1 2 1 5 6 7'.match(/\d+/)लौटता है ["1", index: 0, input: "1 2 1 5 6 7", groups: undefined]। जैसा कि आप देख रहे हैं कि हम केवल पहला मैच ले सकते हैं "1"।'1 2 1 5 6 7'.match(/\d+/g)सभी मैचों की एक सरणी देता है ["1", "2", "1", "5", "6", "7"]।