2009-09-29 13 views
21

के बीच रिटर्न स्ट्रिंग मुझे स्ट्रिंग में स्क्वायर ब्रैकेट्स के अंदर मौजूद टेक्स्ट को वापस करने की आवश्यकता है। मैं निम्नलिखित regex है, लेकिन यह भी वर्ग कोष्ठक रिटर्न:जावास्क्रिप्ट - स्क्वायर ब्रैकेट्स

var matched = mystring.match("\\[.*]"); 

एक स्ट्रिंग ही कभी वर्ग कोष्ठक का एक सेट, शामिल होंगे जैसे:

Some text with [some important info] 

मैं मिलान करवाना चाहते हैं 'समाहित किए हुए कुछ महत्वपूर्ण जानकारी ',' [कुछ महत्वपूर्ण जानकारी] 'की बजाय मुझे वर्तमान में मिलता है।

("\\[(.*)]"); 

यह लौटे सरणी

उत्तर

58

उपयोग समूह। मैंने "अप्रचलित" मिलान करने के लिए ? जोड़ा है, क्योंकि यह संभवतः आप चाहते हैं।

var matches = mystring.match(/\[(.*?)\]/); 

if (matches) { 
    var submatch = matches[1]; 
} 
2

आप पर कब्जा करने की कोशिश कोष्ठक था। जावास्क्रिप्ट दिखने का समर्थन नहीं करता है।

आपको या तो कैप्चर समूह का उपयोग करना होगा या ब्रैकेट को ट्रिम करना होगा।

वैसे, आप शायद अपने regex में एक लालची .* नहीं चाहते हैं। इस प्रयास करें:

"\\[.*?]" 

या बेहतर, इस:

"\\[[^\\]]*]" 
0

आप नहीं कर सकते हैं में एक पर कब्जा कर लिया मैच के रूप में कोष्ठक के भीतर पैटर्न लौटना चाहिए:

9

चूंकि जावास्क्रिप्ट कैप्चर का समर्थन नहीं करता है, इसलिए आपको इसके आसपास हैक करना होगा। इस विकल्प पर विचार करें जो विपरीत दृष्टिकोण लेता है। इसके बजाय जो ब्रैकेट के अंदर क्या है उसे पकड़ें, उनमें से बाहर क्या निकालें। चूंकि वहां कभी भी ब्रैकेट का एक सेट होगा, इसे ठीक काम करना चाहिए। मैं आमतौर पर अग्रणी और पिछली सफेद जगह को अलग करने के लिए इस तकनीक का उपयोग करता हूं।

mystring.replace(/(^.*\[|\].*$)/g, ''); 
+0

इसके बाद) अंत में यदि इसके बाद कोई नई लाइन है तो अंत में। –

संबंधित मुद्दे