regex

2010-02-17 19 views
7

नेट का उपयोग कर विशेष वर्णों की जांच कैसे करें। मैंने विशेष वर्णों की जांच के लिए एक रेगेक्स सत्यापनकर्ता बनाया है जिसका अर्थ है कि मैं उपयोगकर्ता नाम में कोई विशेष पात्र नहीं चाहता हूं। निम्नलिखित कोडregex

Regex objAlphaPattern = new Regex(@"[[email protected]]"); 
      bool sts = objAlphaPattern.IsMatch(username); 

अगर मैं $%^& asghf के रूप में उपयोगकर्ता नाम प्रदान तो सत्यापनकर्ता जो परिणाम मैं चाहता है के रूप में अमान्य डेटा प्रारूप देता है, लेकिन है अगर मैं एक डेटा S23 प्रदान _ @ .-^&()%^$ # फिर मेरे सत्यापनकर्ता डेटा ब्लॉक चाहिए लेकिन मेरे सत्यापनकर्ता की अनुमति देता है डेटा जो गलत है

तो कैसे की अनुमति नहीं करने के लिए az ए.ए. को छोड़कर कोई विशेष वर्ण 0-9 _ @ .-

धन्यवाद सुनील कुमार साहू

उत्तर

14

आपकी अभिव्यक्ति के साथ कुछ चीजें गलत हैं। सबसे पहले आपके पास स्ट्रिंग स्ट्रिंग कैरेक्टर ^ और एंड स्ट्रिंग कैरेक्टर $ आपकी अभिव्यक्ति की शुरुआत और अंत में नहीं है जिसका अर्थ है कि इसे केवल आपकी स्ट्रिंग के भीतर एक मैच ढूंढना है।

दूसरा, आप वर्तमान में केवल एक वर्ण की तलाश में हैं। सभी पात्रों आप * का उपयोग करना होगा की एक मैच के लिए मजबूर करने यहाँ यह क्या होना चाहिए:

Regex objAlphaPattern = new Regex(@"^[[email protected]]*$"); 
bool sts = objAlphaPattern.IsMatch(username); 
+0

धन्यवाद स्पेंसर रूपर्ट, वास्तव में आपकी प्रतिक्रिया ने मुझे बहुत मदद की। मैंने बड़ी गलती की तो आपने मेरी समस्या हल की –

+3

मदद करने में खुशी हुई। हम सभी ने किसी बिंदु पर बड़ी गलती की। –

0

अपने regex को ^[[email protected]]+$ पर बदलें। यहां ^ स्ट्रिंग की शुरुआत को दर्शाता है, $ स्ट्रिंग का अंत है।

+1

मुझे यकीन नहीं है कि यह ब्रैकेट के अंदर होने पर एक विशेष चरित्र माना जाता है। मैं इस पर गलत हो सकता था। –

1

आपका पैटर्न की जांच करता है केवल तभी दी स्ट्रिंग किसी भी "गैर विशेष" वर्ण है; यह अवांछित पात्रों को बाहर नहीं करता है। आप दो चीजें बदलना चाहते हैं; यह जांच कर लें कि पूरी स्ट्रिंग केवल अनुमति दी वर्ण हैं, और यह भी यह एक से अधिक चरित्र के लिए जाँच करना सुनिश्चित करें:

^[[email protected]]+$ 

जोड़ा गया ^ पैटर्न से पहले यह स्ट्रिंग की शुरुआत में मिलान शुरू करते हैं। को + के बाद भी यह सुनिश्चित करने के लिए कि स्ट्रिंग में कम से कम एक वर्ण है, और $ यह सुनिश्चित करने के लिए कि स्ट्रिंग को अंत तक मिलान किया गया हो।

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