जावास्क्रिप्ट / regex: कोष्ठक के बीच पाठ निकालें


92

क्या इसे बदलना संभव होगा

Hello, this is Mike (example)

सेवा

Hello, this is Mike

Regex के साथ जावास्क्रिप्ट का उपयोग कर?

जवाबों:


207
"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, "");

परिणाम:

"Hello, this is Mike"

14
ध्यान दें कि .replace () स्ट्रिंग को स्वयं नहीं बदलता है, यह केवल एक नया स्ट्रिंग लौटाता है। इसलिए आपको अभी भी चर को सेट करना होगा जो आपने बदला है।
अयूब

2
जहाँ कोष्ठक एक तार के बीच में होते हैं, ऊपर का रेगीक्स उनके आसपास के सभी व्हाट्सएप को हटा देगा। यह शायद अच्छा नहीं है।
निगेल जॉनसन

1
इस का उलटा कैसे करें? मैं (example)केवल चाहता हूं
कार्टे

काम नहीं करता है अगर आपके पास कुछ है: यह थोड़ा गड़बड़ है (ऊपर (दाएं)) लेकिन ऐसा होता है :)
TigrouMeow

26
var str = "Hello, this is Mike (example)";

alert(str.replace(/\s*\(.*?\)\s*/g, ''));

यह कोष्ठक के पहले और बाद में अतिरिक्त व्हाट्सएप को भी बदल देगा।


6

प्रयत्न / \([\s\S]*?\)/g

कहाँ पे

(space) अक्षर (स्पेस) से शाब्दिक रूप से मेल खाता है

\(अक्षर का (शाब्दिक अर्थ है

[\S\s]किसी भी चरित्र से \Sमेल खाता है ( किसी भी गैर-व्हाट्सएप चरित्र से \sमेल खाता है और किसी भी व्हाट्सएप चरित्र से मेल खाता है)

*? शून्य और असीमित समय के बीच मेल खाता है

\)अक्षर का )शाब्दिक अर्थ है

g विश्व स्तर पर मेल खाता है

कोड उदाहरण:

var str = "Hello, this is Mike (example)";
str = str.replace(/ \([\s\S]*?\)/g, '');
console.log(str);
.as-console-wrapper {top: 0}


1

मुझे यह संस्करण सभी मामलों के लिए सबसे उपयुक्त लगा। यह सभी व्हाट्सएप को नहीं हटाता है।

उदाहरण के लिए "ए (परीक्षण) बी" -> "ए बी"

"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, " ").trim(); "Hello, this is (example) Mike ".replace(/ *\([^)]*\) */g, " ").trim();


खबरदार trimसार्वभौमिक रूप से समर्थित नहीं है: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… , 2015 में कम से कम यह नहीं था ... 2017 में यह बहुत बेहतर दिखता है।
क्रिस्टोफ रूसो

"यह (उदाहरण) (यहाँ) जो अच्छा नहीं है" के साथ विफल रहता है। अर्थात। नेस्टेड Parens!
मार्क

1

यदि आपको नेस्टेड कोष्ठक के अंदर पाठ को निकालने की आवश्यकता है, तो भी:

        var prevStr;
        do {
            prevStr = str;
            str = str.replace(/\([^\)\(]*\)/, "");
        } while (prevStr != str);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.