2010-01-11 16 views
6

मैं मजबूत पासवर्ड सत्यापन के लिए निम्नलिखित की जांच की जरूरत से मेल खाता है:मजबूत पासवर्ड नियमित अभिव्यक्ति है कि किसी भी विशेष वर्ण

  • कम से कम 7 वर्ण
  • कम से कम 1 अपरकेस चार (AZ)
  • कम से कम 1 संख्या (0-9)
  • कम से कम एक विशेष चार

मैंने पाया और एक रेगुलर एक्सप्रेशन से बदलाव किया है और यह इस तरह है (क्षमा करें, मैं संदर्भ खो दिया ...):

^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@'#.$;%^&+=!""()*,-/:<>?]).*$ 

यह तथ्य यह है कि मैं किसी भी विशेष वर्ण मिलान करने की आवश्यकता के लिए छोड़कर C# में काम कर रहा है, और मैं वास्तव में मतलब किसी भी। दूसरे शब्दों में, मुझे चाहिए कि "विशेष चार" कुछ भी हो लेकिन संख्याएं और निचले/अपरकेस अक्षरों की आवश्यकता हो।

संपादित करें:

स्पष्टता रखने के लिए, के विचार है कि लहजे विशेष वर्ण, तो é, ñ और की तरह इस सवाल के संदर्भ में विशेष वर्ण विचार किया जाना चाहिए हैं।

+10

व्यक्तिगत रूप से मैं इसके लिए नियमित अभिव्यक्ति का उपयोग नहीं करता, क्योंकि इसे तोड़ना आसान है, और सत्यापन के लिए वास्तविक नियमों को खराब कर देता है। क्यों परेशान? बस 4 सरल स्ट्रिंग-मिलान परीक्षण लिखें। – Triptych

+0

मैं स्ट्रिंग-मिलान विधि का प्रयास करूंगा! – BrunoSalvino

+4

आपके नियम उपयोगकर्ता की पसंदों को सीमित कर रहे हैं और पासवर्ड को और अधिक सुरक्षित बनाने में मदद करने के बजाय इसे कम कर रहे हैं। आप मुझे केवल मेरे पासवर्ड के लिए लैटिन अक्षरों का उपयोग करने के लिए मजबूर क्यों करेंगे? –

उत्तर

8
^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).*$ 
+0

'[^ a-zA-Z0-9]' 'é' मिलान हो जाएगा: नहीं एक बहुत विशेष वर्ण ... :) –

+3

उन्होंने कहा कि" कुछ भी लेकिन संख्या और कम/बड़े अक्षरों ", मैं é पात्र लगता है। –

+2

मुझे लगता है कि बार्ट यह कहने की कोशिश कर रहा है कि '[^ a-zA-Z0-9]' किसी भी चरित्र से मेल खाना चाहिए जो * पत्र नहीं है *, लेकिन यह 'é' से मेल खाएगा कि निश्चित रूप से * एक * अक्षर है I मान लीजिए कि यह अन्य "अंतरराष्ट्रीय" अक्षरों जैसे å, ñ और इसी तरह से भी व्यवहार करेगा, जो इसे वास्तव में नहीं करना चाहिए) –

4

मुझे विश्वास है कि: -

\ w

किसी भी शब्द चरित्र से मेल खाता है।

उल्टा होता है: -

\ डब्ल्यू

है जो तुम क्या चाहते हैं।

http://www.nregex.com/nregex/default.aspx

+1

अंडरस्कोर के लिए विफल रहता है। –

+0

अच्छा एक, यूरी। संशोधित। –

1

यहाँ एक नज़र डालें: Unicode Regular Expressions और \p{Symbol} या \p{Punctuation}

की तरह, एक यूनिकोड वर्ग लेने -:

संपादित

^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_]).*$ 

टेस्ट अपने पर नियमित अभिव्यक्ति

+0

हां, '\ p {विराम चिह्न} 'और' \ p {प्रतीक}' मैं यही करता हूं। +1 –

0

इस प्रयास करें:

^(?=.{7,})(?=.*?\d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[@'#.$;%^&+=!"()*,-/:<>?]) 
5

(नहीं सी # कोड)

def validate (value): 
    return (value.Length >= 7 && 
      value.IndexOfAny(['0', ..., '9']) >= 0 && 
      value.IndexOfAny(['A', ..., 'Z']) >= 0 && 
      value.IndexOfAny(['@', ..., ')'])); 

हाँ मैं जानता हूँ कि यह क्या सवाल की आवश्यकता नहीं है, लेकिन मेरा मानना ​​है कि यह बहुत स्पष्ट है, उच्च प्रदर्शन और की तुलना में बनाए रखने के लिए आसान है कोई RegExp समाधान।

+0

मुझे यह भी पसंद है। +1। –

+0

यह वास्तव में पठनीयता में सुधार करता है। – BrunoSalvino

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