2009-08-22 8 views
13

क्या कोई मुझे यह जांचने के लिए नियमित अभिव्यक्ति लिखने में मदद कर सकता है कि पासवर्ड में कम से कम एक अक्षर और एक नंबर है?यह देखने के लिए नियमित अभिव्यक्ति है कि किसी दिए गए पासवर्ड में कम से कम एक नंबर और सी # में एक अक्षर है या नहीं?

मुझे एक आवश्यकता है कि उपयोगकर्ता पासवर्ड अल्फान्यूमेरिक होना चाहिए और मैं नियमित अभिव्यक्ति का उपयोग करके उसमें जांच करने में सक्षम होना चाहता हूं।

+0

डाउनवॉटेड? वास्तव में? –

+10

@Paco: मुझे पता नहीं था कि स्टैक ओवरफ़्लो केवल कठिन प्रश्नों की अनुमति देता है! – LukeH

+0

मैं ल्यूक से सहमत हूं। स्टैक ओवरफ्लो को अनुभवी पेशेवर के लिए बाइटकोड को कम करने में समस्या नहीं है, या 'डब्लूएमआई दस्तावेज कहां है'। –

उत्तर

2
bool isValid = Regex.IsMatch(password, @"[a-zA-Z]") && 
       Regex.IsMatch(password, @"\d"); 
7

आप इसे एक regex में आप हालांकि "[a-zA-Z].*\\d|\\d.*[a-zA-Z]" दो अलग चेकों का उपयोग कर सकते अधिक पठनीय हो सकता है चाहते हैं।

संपादित करें: दो चेक, जो मैं काफी पठनीय मिल जाए, साथ एक दृष्टिकोण इस प्रकार दिखाई देंगे:

Regex.IsMatch(password, "\\d") && Regex.IsMatch(password, "[a-zA-Z]") 
+0

और फिर आपको परीक्षण करने के लिए एक अतिरिक्त जांच की आवश्यकता होगी यदि उसके पास केवल अल्फान्यूमेरिक वर्ण हैं। –

21

सकारात्मक अग्रदर्शी आप जो खोज रहे हैं है। रेगुलर एक्सप्रेशन से इस तरह दिखता है:

(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+ 

यहाँ, (?=.*[A-Za-z]) सकारात्मक अग्रदर्शी जो दावा है अपने स्ट्रिंग कम से कम एक चरित्र, और (?=.*[0-9]) के रूप में दावा है कि यह कम से कम एक अंकों किया है। यह ध्यान रखना महत्वपूर्ण है कि सकारात्मक लुकहेड एक मैच नहीं लौटाता है, बल्कि यह दावा करता है कि कोई मिलान मौजूद है या नहीं। इसलिए, आपको पिछले रेगेक्स को "जोर देकर कहना चाहिए कि इसमें कम से कम एक चरित्र है; जोर दें कि इसमें कम से कम एक अंक है; अब हम जानते हैं कि दावा पारित हो गए हैं, बस अल्फान्यूमेरिक वर्णों की जांच करें"।

यह बहुत रोचक है क्योंकि यह आपको अपने रेगेक्स को बहुत जटिल बनाये बिना आसानी से आपके आवेदन की सत्यापन आवश्यकताओं को गठबंधन करने की अनुमति देता है। उदाहरण के लिए, यदि आप अब स्ट्रिंग की आवश्यकता होती है बिल्कुल 20 वर्ण के लिए, तो आप सिर्फ इसलिए की तरह एक नया सकारात्मक अग्रदर्शी अभिकथन, जोड़ने की जरूरत:

(?=[A-Za-z0-9]{20})(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+ 

आशा है कि यह मदद करता है!

+0

ऐसा क्यों नहीं? (? =। * [ए-ज़ा-जेड]) (? =। * [0-9]) [ए-ज़ा-जे 0-9] {20} –

+0

आपको अपने सकारात्मक लुकहेड में '। *' क्यों चाहिए? मैं समझ नहीं पा रहा हूं कि यदि आप इसे छोड़ देते हैं तो परिणाम अलग कैसे होगा। – xr280xr

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

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