2010-02-12 10 views
6

क्या यह लिखने का एक छोटा रास्ता है?जावास्क्रिप्ट रेगेक्स संकलन()

var needed = /\$\[\w+\]/mi; 
needed.compile(/\$\[\w+\]/mi); 

मुझे पैटर्न को वापस रेगेक्स में क्यों पास करना होगा जब मैंने इसे पहले पंक्ति में घोषित कर दिया है ?!

+0

आपको क्या लगता है आपको क्या लगता है? –

+1

यदि मैं पैटर्न को फिर से शामिल नहीं करता हूं, तो रेगेक्स में लगभग दोगुना समय लगता है। – JamesBrownIsDead

उत्तर

7

जावास्क्रिप्ट में नियमित अभिव्यक्तियों को परिभाषित करने के दो तरीके हैं - एक ऑब्जेक्ट कन्स्ट्रक्टर के माध्यम से और एक शाब्दिक के माध्यम से। वस्तु को रनटाइम पर बदला जा सकता है, लेकिन शाब्दिक को स्क्रिप्ट के लोड पर संकलित किया जाता है, और बेहतर प्रदर्शन प्रदान करता है।

var txt=new RegExp(pattern,modifiers); 

या अधिक बस:

var txt=/pattern/modifiers; 

यह एक ही बात है कि cobbai कह रहा है है। संक्षेप में, आपको दोनों को करने की ज़रूरत नहीं है।

2

MDC से:

जब अभिव्यक्ति

मूल्यांकन किया जाता है शाब्दिक अंकन नियमित अभिव्यक्ति का संकलन प्रदान करता है ताकि /\$\[\w+\]/mi एक संकलित regex पहले से ही है।

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