g
संशोधक सेट होने पर जावास्क्रिप्ट उप-मिलान क्यों काम करना बंद कर देते हैं?जावास्क्रिप्ट नियमित अभिव्यक्तियां और उप-मिलान
var text = 'test test test test';
var result = text.match(/t(e)(s)t/);
// Result: ["test", "e", "s"]
ऊपर काम करता है ठीक, result[1]
"e"
है और result[2]
"s"
है।
var result = text.match(/t(e)(s)t/g);
// Result: ["test", "test", "test", "test"]
उपरोक्त मेरे कैप्चरिंग समूहों को अनदेखा करता है। क्या निम्नलिखित एकमात्र वैध समाधान है?
var result = text.match(/test/g);
for (var i in result) {
console.log(result[i].match(/t(e)(s)t/));
}
/* Result:
["test", "e", "s"]
["test", "e", "s"]
["test", "e", "s"]
["test", "e", "s"]
*/
निष्पादन का उपयोग कर जी संशोधक को नहीं लगता है, लेकिन यह उप-मिलान/समूहों का समर्थन करता है। तो परिणाम पहला मैच होगा (यह मूल रूप से जी संशोधक को अनदेखा करता है) –
इसके बारे में एक स्पष्टीकरण जोड़ा गया - आपको कई मैचों को प्राप्त करने के लिए बार-बार निष्पादन() को कॉल करना होगा। – hbw
सबसे सुरुचिपूर्ण समाधान नहीं है। मैं इस तरह कुछ हद तक एक निर्गम उम्मीद कर रहा था: [ \t [ "परीक्षण", "ई", "एस"], \t [ "परीक्षण", "ई", "एस"], \t [ " परीक्षण "," ई "," एस "], \t [" परीक्षण "," ई "," एस "] ] –