2008-12-12 10 views
14

मुझे आश्चर्य है कि जावास्क्रिप्ट में अवांछित मिलान का उपयोग करने का कोई तरीका है या नहीं? मैंने यू मॉडिफर की कोशिश की, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।क्या नियमित अभिव्यक्तियों के लिए जावास्क्रिप्ट में अप्रासंगिक मिलान का उपयोग करने का कोई तरीका है?

मैं जावास्क्रिप्ट में एक छोटा सा BBCode पार्सर लिखने के लिए चाहते हैं, लेकिन ungreedy बिना यह मिलान कुछ इस तरह करना संभव (कम से कम जहाँ तक मैं इसे देखना के रूप में) नहीं है:

'[b]one[/b] two [b]three[/b]'.replace(/\[b\](.*)\[\/b\]/, '<b>$1</b>'); 

लेकिन एक ऐसी प्रतिस्थापन अच्छा होगा क्योंकि तब HTML वैधता की जांच करने की आवश्यकता नहीं है। अनजान मार्कअप सरल टेक्स्ट रहेगा।

उत्तर

23

आप ?* या + के बाद इसे अप्रासंगिक बनाने के लिए उपयोग कर सकते हैं, उदा। (.*?)

+0

अविश्वसनीय, लेकिन यह बस काम करता है! धन्यवाद। अन्य परिवेशों में, ध्वज/यू (अप्रासंगिक) का उपयोग किया जा सकता है। लेकिन जावास्क्रिप्ट विधियों के लिए उपलब्ध नहीं है (नोडजेस विधियों के अपवाद के साथ, मुझे लगता है) – cepix

2

मुझे देर हो चुकी है, लेकिन मैं वैसे भी रेगेक्स पोस्ट करूंगा।

'[b]one[/b] two [b]three[/b]'.replace(/\[b\](.+?)\[\/b\]/g, '<b>$1</b>'); 
+0

जब मैं regexps के साथ काम कर रहा हूं तो मुझे हमेशा http://regexpal.com/ सहायक लगता है। – some