2011-04-29 12 views
5

मैं अपनी पासवर्ड आवश्यकताओं के लिए एक नियमित नियमित अभिव्यक्ति की तलाश में हूं। पासवर्ड:पासवर्ड ताकत सत्यापन के लिए RegEx प्रश्न

  • कम से कम 8 वर्ण होने चाहिए
  • रिक्त स्थान नहीं हो सकता है
  • दोनों लोअरकेस और अपरकेस वर्णों
  • होते होते कम से कम एक संख्यात्मक अंकों
  • कम से कम एक विशेष वर्ण होते हैं (यानी किसी भी चरित्र 0-9,a-z,A-Z)
+4

यह नियमित अभिव्यक्तियों का एक भयानक उपयोग है। मैन्युअल रूप से करना इतना आसान है। मैं इसके लिए regex का उपयोग करने के खिलाफ सलाह देंगे। –

+0

मुझे एक संयोजक विस्फोट दिखाई देता है ... –

+1

एक अभिव्यक्ति में होने की पुनरुत्थान इसे जटिल बनाने के लिए जटिल और बहुत मुश्किल है जिसे इसे बनाए रखना है। मैं इसे और अधिक रखरखाव करने के लिए विभिन्न परीक्षणों में विभाजित करने का सुझाव देता हूं। आप यह भी उल्लेख करना भूल गए कि आप किस रेगेक्सपी इंजन का उपयोग कर रहे हैं, क्योंकि आप क्या कर सकते हैं इसके साथ मतभेद हैं। परीक्षण कहां किया जाता है, इस पर निर्भर करता है कि पासवर्ड की विफलता के कारण उपयोगकर्ता प्रतिक्रिया देने में रुचि हो सकती है। – some

उत्तर

4

आइडिया और काम के सबसे से http://www.zorched.net/2009/05/08/password-strength-validation-with-regular-expressions/

^\S*(?=\S{8,})(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])(?=\S*[\W])\S*$ 

लिया मैं स्पेस वर्णों से इनकार करने के लिए अपने पद के निचले भाग में बुनियादी जवाब थे, लेकिन \S के साथ सभी डॉट्स की जगह है, और के कुछ चारों ओर ले जाया दावे

+0

लगभग +1। संदर्भित आलेख एक अच्छा है, लेकिन यह गलती से अभिव्यक्ति की शुरुआत में '। *' डॉट-स्टार रखने का सुझाव देता है (इसकी आवश्यकता नहीं है क्योंकि अंत में डॉट-स्टार स्ट्रिंग से मेल खाएगा)। यद्यपि यह इस विशिष्ट समस्या के लिए कोई नुकसान नहीं करता है (आपका उत्तर सही है और ठीक काम करता है), यदि पासवर्ड की लंबाई पर ऊपरी सीमा है तो यह असफल हो जाएगी। यदि लंबाई की आवश्यकता 8 से 12 वर्णों तक है, तो एक सही अभिव्यक्ति होगी: '^ (? =। {8,12} $) (? =। * [Az]) (? =। * [AZ]) (? =। * \ d) (? =। * \ डब्ल्यू) \ एस * $ '(ध्यान दें कि लुकहेड में' \ S' की कोई आवश्यकता नहीं है।) अन्यथा अच्छा जवाब। – ridgerunner

8

तर्क को कोड करना शायद आसान होगा। Regex मिलान पैटर्न के लिए प्रयोग किया जाता है। पासवर्ड कुछ हद तक यादृच्छिक तार होते हैं, इसलिए समस्या स्वयं को रेगेक्स द्वारा हल करने के लिए आसानी से उधार नहीं देती है। यह संभव है लेकिन पढ़ने के लिए क्रिप्टिक और बनाए रखने के लिए कड़ी मेहनत होगी।

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