संभव डुप्लिकेट:
How to get function parameter names/values dynamically from javascriptनियमित अभिव्यक्ति समारोह परिभाषा से पैरामीटर सूची प्राप्त करने
मैं वर्तमान में जावास्क्रिप्ट (Node.js) में एक परियोजना पर काम कर रहा हूँ है कि मुझे करने की कोशिश कर एक समारोह से पैरामीटर नाम की एक सरणी (नहीं मान, मैं तर्क की जरूरत नहीं है) मिलता है। मैं वर्तमान में फ़ंक्शन स्ट्रिंग प्राप्त करने के लिए Function.toString() का उपयोग कर रहा हूं और उसके बाद मेरी पैरामीटर सूची प्राप्त करने के लिए इसके खिलाफ एक रेगेक्स चला रहा हूं।
paramList = ['paramOne', 'paramTwo']
: मैं एक सरणी वापस इस तरह उम्मीद करेंगे
var myFunction = function (paramOne, paramTwo) { ... }
इस के खिलाफ मेरी regex चल रहा है, और फिर कुछ स्ट्रिंग जादू (विभाजन, आदि) कर रही:
के निम्नलिखित सरल उदाहरण लेते हैं
मैं कुछ है कि काम करता है लेकिन यह शायद सबसे अच्छा समाधान आप चर नाम के लिए इस्तेमाल करते हैं और है कि जावास्क्रिप्ट आप एकाधिक पंक्तियों में कार्यों को परिभाषित करने देगा देता है जावास्क्रिप्ट फंकी पात्रों में से कुछ दिया नहीं है जैसे मैं महसूस कर रहा हूँ।
function.*[\w\s$]*(\((.*[\w\s,$]*)\))
यह मुझे मेरे "मैच" देता है समूह 1 में और उसके बाद समूह 2, जो अच्छा है में कोष्ठक के बिना मेरे परम सूची:
यहाँ मैं वर्तमान में क्या है। क्या यह वास्तव में करने का सबसे अच्छा तरीका है जो मैं चाहता हूं? क्या इसके लिए एक बेहतर नियमित अभिव्यक्ति है जिसका उपयोग मैं कर सकता हूं? मैं वास्तव में कुछ "सरल" की तलाश नहीं कर रहा हूं, लेकिन वास्तव में कुछ ऐसा है जो सभी संभावित स्थितियों को पकड़ सकता है।
किसी भी मदद की सराहना की है, और अग्रिम में बहुत धन्यवाद!
आपको कैसे लगता है कि मुझे इसके बारे में जाना चाहिए? यही वह है जो मैं अपने रेगेक्स के साथ करने की कोशिश कर रहा हूं, लेकिन शायद एक अलग दृष्टिकोण है? क्या आप सोच रहे हैं कि मैं सिर्फ "(" और ")" से इंडेक्स कर सकता हूं और फिर बीच में क्या विभाजित कर सकता हूं? क्या वह पागल रेगेक्स से बेहतर होगा? –
@ जेसनएल .: मैंने उत्तर में कुछ कोड जोड़ा (और एक लाइव उदाहरण)। –
धन्यवाद! मेरा समाधान मुझे लगता है कि मैं उम्मीद कर रहा था उससे कहीं अधिक सरल है। मैं वर्तमान में जावास्क्रिप्ट के लिए अनुमति देता है सभी अलग-अलग विविधताओं के साथ इसे आजमा रहा हूं। क्या यह किसी भी पागल विशेष पात्रों को कैप्चर करेगा जावास्क्रिप्ट अनुमति देता है (सबसे मशहूर में से एक अस्वीकृति का रूप है)? मुझे यह भी ध्यान रखना चाहिए कि यह केवल node.js पर्यावरण के लिए है, इसलिए मुझे वास्तव में केवल V8 के बारे में चिंता करने की आवश्यकता है :) –