रेगेक्स का उपयोग करके जावास्क्रिप्ट में दो वर्णों के बीच एक विशिष्ट वर्ण को बदलें

मेरी विशिष्ट आवश्यकता है

मैं डबल कोट्स के बीच सिंगल कोट को बदलना चाहता हूं।

उदाहरण: sdadads'sdasdads"यह 'उद्धरण' है -> sdadads'sdasdads"यह उद्धरण है"

मैंने कोशिश की

`sdadads'sdasdads"this is the 'quote"`.replace(/\"[^\']\"/g, 'replaced')

लेकिन आउटपुट है

sdadads'sdasdadsreplaced

0
Sandeep Kumar 19 पद 2018, 22:26

3 जवाब

सबसे बढ़िया उत्तर

आप इसका उपयोग .replace के साथ कर सकते हैं एक समारोह:

var str = `"this 'is 'the 'quote"`

var repl = str.replace(/"[^"]*"/g, function($0) { 
           return $0.replace(/'/g, ""); });

console.log(repl);
//=> "this is the quote"
  • नकारात्मक वर्ण वर्ग का उपयोग करके "..." स्ट्रिंग से मिलान करने के लिए एक साधारण रेगेक्स का उपयोग करना
  • फ़ंक्शन के अंदर हम सभी सिंगल कोट्स हटाते हैं
2
anubhava 19 पद 2018, 23:15

जावास्क्रिप्ट में परिवर्तनीय चौड़ाई नकारात्मक देखने की अनुमति नहीं है, इसलिए आप यह पता लगाने के लिए \K ऑपरेटर का उपयोग कर सकते हैं कि ' दो दोहरे उद्धरण चिह्नों के बीच है या इस रेगेक्स का उपयोग नहीं कर रहा है,

"[^']*\K'(?=[^']*")

स्पष्टीकरण:

  • " --> दोहरे उद्धरण चिह्नों से मेल खाता है
  • [^']* --> शून्य या अधिक वर्णों से मेल खाता है, केवल एक उद्धरण को छोड़कर
  • \K --> अब तक जो कुछ भी मेल खाता है उसे रीसेट करता है
  • ' --> एक शाब्दिक एकल उद्धरण से मेल खाता है
  • (?=[^']*") --> यह सुनिश्चित करने के लिए आगे देखें कि शून्य या अधिक के बाद एक एकल उद्धरण को छोड़कर कोई भी वर्ण है

लाइव डेमो

1
Pushpesh Kumar Rajwanshi 19 पद 2018, 22:46

आप डबल कोट्स को कैप्चर कर सकते हैं और कैप्चरिंग ग्रुप में डबल कोट्स के बीच में क्या है। फिर एक प्रतिस्थापन फ़ंक्शन का उपयोग करें जहां आप दूसरे कैप्चरिंग समूह में सभी एकल उद्धरणों को एक खाली स्ट्रिंग के साथ प्रतिस्थापित करते हैं

(")([^"]+)(")
let str = `sdadads'sdasdads"this is the 'quote"`;
let res = str.replace(/(")([^"]+)(")/g, function(_, g1, g2, g3) {
  return g1 + g2.replace("'", "") + g3;
});
console.log(res);
1
The fourth bird 19 पद 2018, 23:07