मुझे एक ऐसी स्थिति मिली है जहां मैं उपयोगकर्ता से regexp प्राप्त करना चाहता हूं और इसे कुछ हज़ार इनपुट स्ट्रिंग के खिलाफ चला सकता हूं। मैनुअल में मैंने पाया कि RegExp
ऑब्जेक्ट में .compile()
विधि है जिसका उपयोग ऐसे मामलों में चीजों को गति देने के लिए किया जाता है। लेकिन अगर मैं पहले से ही निर्माता में पास कर चुका हूं तो मुझे regexp स्ट्रिंग को फिर से क्यों पारित करना होगा? शायद निर्माता compile()
खुद ही करता है?जावास्क्रिप्ट: RegExp.compile() का क्या मतलब है?
उत्तर
RegExp().compile()
method is deprecated। यह मूल रूप से कन्स्ट्रक्टर जैसा ही है, जो मुझे लगता है कि इसे बहिष्कृत क्यों किया गया था। आपको आजकल कन्स्ट्रक्टर का उपयोग करना होगा।
दूसरे शब्दों में, यदि आप ऐसा करने में सक्षम होने के लिए प्रयोग किया जाता:
var regexp = new RegExp("pattern");
regexp.compile("new pattern");
लेकिन आजकल यह केवल कॉल करने से किसी भी अलग नहीं है: जहाँ तक मैं सभी RegExp बता सकते हैं
var regexp = new RegExp("pattern");
regexp = new RegExp("new pattern");
.compile एक RegExp ऑब्जेक्ट की अंतर्निहित नियमित अभिव्यक्ति को प्रतिस्थापित करता है। मुझे लगता है कि संकलन में अतीत में मूल्य हो सकता है, लेकिन सभी आधुनिक जेएस इंजन पहले कॉल और कैश पर संकलित "संकलित" संस्करण "संकलित" संस्करण।
और ओपेरा 11 के साथ, RegExp.compile()
चल रहा है वास्तव में त्रुटियों का कारण बन जाएगा।
जाहिर है, जब ओपेरा "संकलित" एक regex, यह फ़ॉरवर्ड स्लैश में re.source
स्ट्रिंग (जैसे re.source == "^(.)"
हो जाता है "/^(.)/"
) गिर्द घूमती है। यदि आप मैन्युअल रूप से रेगेक्स संकलित करते हैं, तो ओपेरा इस तथ्य को नहीं पहचानता है और आगे बढ़ता है और इसे फिर से संकलित करता है (re.source
"//^(.)//"
बन जाता है)। प्रत्येक संकलन परिणाम आगे के स्लेश के एक अतिरिक्त सेट में होता है, जो नियमित अभिव्यक्ति के अर्थ को बदलता है और त्रुटियों में परिणाम देता है।
आपको पहले अपने regex संकलन यदि आप /
उपयोग कर रहे हैं इसका इस्तेमाल करने के लिए है, इस आजमा कर देखें:
var regex=new RegExp('/[a-zA-Z]/')
console.log("not compiled with escape /", regex.test("ciao"))
regex.compile()
console.log("compiled", regex.test("ciao"))
var regex=new RegExp('[a-zA-Z]')
console.log("not compiled, but no escape /", regex.test("ciao"))
वाह, यह दिलचस्प है। मैंने अभी इसे चेक किया है, और आप सही हैं! हालांकि एमडीएन में इसका उल्लेख नहीं है। –
इस स्पष्टीकरण को देखें: http://stackoverflow.com/a/7964948/651789 – ken
- 1. जावास्क्रिप्ट:/* @ @ */मतलब क्या है?
- 2. जावास्क्रिप्ट में @const का मतलब क्या है?
- 3. जावास्क्रिप्ट में /// मतलब क्या है?
- 4. क्या करता है! जावास्क्रिप्ट में कार्य का मतलब है?
- 5. जावास्क्रिप्ट "टुपल" नोटेशन: इसका क्या मतलब है?
- 6. खाली जावास्क्रिप्ट समारोह? इसका क्या मतलब है?
- 7. जावास्क्रिप्ट में 'नया' मतलब क्या है?
- 8. os.error का क्या मतलब है?
- 9. FILL_AND_STROKE का क्या मतलब है?
- 10. संयोजन का मतलब क्या है?
- 11. दस्तावेज़ का क्या मतलब है?
- 12. क्या() => {} का मतलब है?
- 13. @plt का मतलब क्या है?
- 14. MethodImplOptions.InternalCall का क्या मतलब है?
- 15. 'अल्फकी' का क्या मतलब है?
- 16. आवश्यकता का मतलब क्या है?
- 17. एक्सपीएस का क्या मतलब है?
- 18. iter_swap का क्या मतलब है?
- 19. /([^.]*)\.(.*)/ मतलब क्या है?
- 20. $ ([]) jQuery में क्या मतलब है?
- 21. पायथन में विरासत का क्या मतलब है?
- 22. क्या है = = मतलब?
- 23. निर्धारक मतलब क्या है?
- 24. अपरिवर्तनीय मतलब क्या है?
- 25. nginx में अपस्ट्रीम का मतलब क्या है?
- 26. बटन _armed_ का क्या मतलब है?
- 27. बाध्यकारी का मतलब वास्तव में क्या है?
- 28. एक Django "ऐप" का मतलब क्या है?
- 29. आईसीएलएएसफ़ैक्टरी :: लॉकसेवर का क्या मतलब है?
- 30. पैकेज एनोटेशन का क्या मतलब है?
कौन सा इंजन वास्तव में कर कैश नियमित अभिव्यक्ति? और क्या वे हमेशा ऐसा करते हैं? कैश में अभिव्यक्ति कितनी देर तक रखी जाती है? मैं विशेष रूप से वी 8 में रूचि रखता हूं। – CoDEmanX