2013-07-18 5 views
22

क्योंकि मेरे regex सही नहीं है मैं नहीं जानता:रेंज जावास्क्रिप्ट में

var domain = "google\.com\.br"; 
var reEmail = new RegExp("^([A-Za-z0-9_\-\.])+\@" + domain + "$"); 

मैं इस जरूरत है एक ईमेल, उदाहरण के मान्य करने के लिए: reEmail.test("[email protected]");

मैं इस त्रुटि मिलती है:

चरित्र वर्ग

+0

उपयोग एक regex शाब्दिक: RegExp की अपनी ओर

console.log("^([A-Za-z0-9_\-\.])+\@"); 

में परिणाम '/^([। एक-zA-Z0-9 _ \ -]) + @ /' !!! – Bergi

उत्तर

43

में आदेश से बाहर रेंज क्योंकि आप एक स्ट्रिंग का उपयोग कर RegExp बनाने +०१२३६४०६१२०_-. बन जाता है और यह अमान्य सीमा है। (यह _ से . करने के लिए एक सीमा है और वह सही नहीं है)

आप इसे डबल बच की जरूरत है:

new RegExp("^([A-Za-z0-9_\\-\\.])[email protected]" + domain + "$"); 

इस तरह \\ स्ट्रिंग में एक \ और फिर हो जाता है प्रयोग किया जाता है RegExp में - से बचने के लिए।

संपादित करें: परिणाम लॉग इन करने के

आप स्ट्रिंग द्वारा RegExp बनाते हैं यह हमेशा उपयोगी है ताकि आप देख अगर तुम सब कुछ सही किया:

उदा

^([A-Za-z0-9_-.])[email protected] 
+6

एक तरफ ध्यान दें, इसे संभालने का एक त्वरित तरीका यह है कि, यदि आपको अपने चरित्र समूह में एक वैध चरित्र के रूप में '-' को अनुमति देने की आवश्यकता है, तो हमेशा इसे समूह में पहले या अंतिम वर्ण के रूप में रखें (उदाहरण के लिए,' [ -ए-जेए-जेड -9 _9 _] 'या' [ए-जेए-जेड -9 _-] ')। रेगेक्स यह जानकर काफी समझदार है कि आप उस चरित्र के साथ एक सीमा निर्दिष्ट नहीं कर रहे हैं, अगर यह उन पदों में है (बिना किसी स्लैश से बचने की आवश्यकता के)। – talemyn

+0

@talemyn यकीन है कि यह सच है। व्यक्तिगत रूप से मैं इसे बचाना पसंद करता हूं (और इसे हमारे कोडिंग दिशानिर्देश में भी सेट करता हूं) क्योंकि इसका एक विशेष अर्थ है। –

+0

इसे उत्तर स्वीकार किया जाना चाहिए। @talemyn द्वारा भी अच्छा जोड़ा – adi

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