"funny+gifs-politics+aww".match(/\+(\w+)/gis)
[+gifs, +aww]
के साथ रिटर्न ऐरे, जब मैं [gifs, aww]
ढूंढ रहा हूं। यह कोई फर्क नहीं पड़ता कि मैंने कोष्ठक कहाँ रखा है।
"funny+gifs-politics+aww".match(/(\+\w+)/gis)
वही परिणाम। मुझे यहां क्या समझ नहीं आ रहा है? धन्यवाद।
3 जवाब
खैर, String#match()
a>केवल पूर्ण मिलान तत्व प्रदान करेगा और कोष्ठक केवल कैप्चरिंग समूह बनाएगा, ताकि सभी प्राप्त करने के लिए वे मैच जिनका आपको उपयोग करना चाहिए String.matchAll()
, फिर पहचानें कि आप किस कैप्चरिंग ग्रुप की तलाश कर रहे हैं। लेकिन अगर आपके मामले का पैटर्न हमेशा +
साइन के रूप में जाना जाता है, तो आप बस String#replace()
।
console.log("funny+gifs-politics+aww".match(/\+(\w+)/gis).map(item => item.replace('+', '')))
साथ ही जैसा कि टोटो ने पहले कहा था कि आप तत्व का मिलान करने के लिए पॉजिटिव लुकबैक का उपयोग कर सकते हैं, यदि केवल एक विशेष तत्व (जैसे +
) इसके पहले मौजूद है।
console.log("funny+gifs-politics+aww".match(/(?<=\+)\w+/gis))
आप .matchAll()
विधि का उपयोग कर सकते हैं, जो मुझे लगता है कि बिल्कुल नई है।
const res = "funny+gifs-politics+aww".matchAll(/\+(\w+)/gis);
const subs = [];
for (const r of res) {
console.log(r);
subs.push(r[1]);
}
console.log(subs);
अन्यथा आप लूप में .exec()
का उपयोग कर सकते हैं।
const re = /\+(\w+)/gis;
const s = "funny+gifs-politics+aww";
let match = null;
const subs = [];
while((match = re.exec(s))) {
console.log(match);
subs.push(match[1]);
}
console.log(subs);
यह सुनिश्चित करने के लिए कि शब्दों से पहले एक प्लस है लेकिन इसे कैप्चर किए बिना सकारात्मक लुकबैक (?<=\+)
का उपयोग करें।
res = "funny+gifs-politics+aww".match(/(?<=\+)\w+/gis);
console.log(res);