2013-10-18 8 views
12

में '@' युक्त जावास्क्रिप्ट रेगेक्स का उपयोग करके मैं एक रेज़र व्यू पेज में जावास्क्रिप्ट के साथ ईमेल पता सत्यापन कर रहा हूं। regex मैं उपयोग करने के लिए जा रहा हूँ Validate email address in JavaScript?रेजर

हालांकि पर प्रस्तावित एक के समान है, क्योंकि regex एक '@' वर्ण है, मैं जब कोशिश वेब अनुप्रयोग चलाने के लिए पार्सर त्रुटि हो रही है।

मेरी regex लग रहा है

तरह
/^...otherpart @* ... other part$/ 

मैं मूल regex में ... @@ * ..., इस संकलन त्रुटि का सफाया करने के लिए एक '@' चरित्र जोड़ने की कोशिश की, लेकिन बनाने के लिए लगता है रेगेक्स काम करना बंद कर देता है। (हमने इसे किसी अन्य वेब ऐप में उपयोग किया है जो रेजर इंजन का उपयोग नहीं करता है, इसलिए मुझे पता है कि यह काम करता है)।

क्या '@' चरित्र से बचने का कोई और तरीका है?

+0

क्या आपने अपनी स्क्रिप्ट ब्लॉक को ''? – Jasen

+0

@ जेसन मैंने चाल की कोशिश नहीं की है। कल कोशिश करेंगे और आपको परिणाम बताएंगे। –

+0

यदि आप इस स्क्रिप्ट का उपयोग करते हैं तो कई जगहें हैं, शायद इसे अपने स्वयं के .js फ़ाइल में रखना एक अच्छा विचार है। व्यक्तिगत सत्यापन नियम, जैसे कि अधिकतम/मिनट, को तत्वों के लिए डेटा-गुणों में रखा जा सकता है और jQuery के माध्यम से पढ़ा जा सकता है। – jfrankcarr

उत्तर

16

@@ से बचने के लिए आप इसके आगे @ जोड़ सकते हैं, क्वांटिफ़र * छोड़ने का प्रयास करें। यदि यह काम नहीं करता है तो फ़ंक्शन के आस-पास <text></text> जोड़ें, यह रेजर को सामग्री को पार्स करने के लिए कहता है। वैकल्पिक रूप से आप अपनी जरूरतों को पूरा करने के लिए जावास्क्रिप्ट को एक अलग फ़ाइल में डाल सकते हैं। एक भी करने के लिए

@('@') 

ऊपर रेंडर किया जाएगा:

किसी कारण से आप अपने स्ट्रिंग में एक से अधिक @@ है, तो आगे जगह कोड ब्लॉक @:@@

+1

मैंने कुछ चीजों की कोशिश की है ... '' और '@:' के साथ लाइन शुरू करें, लेकिन केवल '@@' चाल चलती है। दूसरा विकल्प एक अलग फ़ाइल का उपयोग करना है। – Jasen

+0

सहमत हुए लेकिन यह काम नहीं करता है। – Jasen

+2

मैं रेजर पार्सर को संतुष्ट करने के लिए एक फंकी रेगेक्स पैटर्न लिखने के बजाय इसे एक अलग फ़ाइल में डालने के इच्छुक हूं। कभी-कभी बच निकले वर्णों के बारे में सोचना बिना रेगेक्स पैटर्न को समझना मुश्किल होता है। – Jasen

8

regex के अंदर निम्नलिखित रखो बजाय @ @।

आपका उदाहरण बन जाएगा:

/^...otherpart @('@')* ... other part$/ 
+0

यह स्वीकार्य उत्तर होना चाहिए! @@ को दोगुना करना आपके REGEX को बदलता है और यह वही नहीं है जो आप चाहते हैं। फिर भी, मेरी इच्छा है कि @ साइन इन रेजर को स्कैप करने का एक बेहतर तरीका था, \ –

0

आप बस डबल @@ का उपयोग करें।
यह मेरे लिए काम करता है और मुझे लगता है कि यह एकमात्र तरीका है।