2012-08-08 54 views
8

मैं अपने पासवॉर्ड्स को सत्यापित करने के लिए preg_match फ़ंक्शन बनाना चाहता हूं, लेकिन मुझे यकीन नहीं है कि इसे निम्नलिखित विशेष वर्णों का उपयोग करने के लिए कैसे लिखना है: [email protected]#$%

if(!preg_match(?????)$/', $password)) 

यहाँ मेरी पासवर्ड नियम है कि मैं regex में काम करना चाहते हैं कर रहे हैं:

  • मई पत्र और अंक हो
  • होने चाहिए कम से कम 1 संख्या और 1 पत्र
  • किसी भी शामिल हो सकता है इन पात्रों में से: [email protected]#$%
  • 8-12 वर्ण
होना चाहिए

आप जो भी मदद कर सकते हैं, उसके लिए धन्यवाद।

+2

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

+0

@ ड्रैगन मैंने अधिकतम 50 वर्णों में वृद्धि की है। यह एक साधारण साइट है और मुझे लगता है कि मैं सोच रहा था कि 8-12 चरित्र लोगों को याद रखना आसान होगा और उनके पासवर्ड को रीसेट करने की आवश्यकता कम होगी। लेकिन जैसा कि आपने कहा था, पासवर्ड एन्क्रिप्टेड होने के साथ, यह वास्तव में एक सौदा का बड़ा नहीं है। –

+0

मैंने अपने लिए मेरे सभी पासवर्ड याद रखने की अनुमति दी :-) –

उत्तर

41

मुझे लगता है कि यह है कि तरह दिखना चाहिए:

if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[[email protected]#$%]{8,12}$/', $password)) { 
    echo 'the password does not meet the requirements!'; 
} 
शुरुआत के बीच

->^
और अंत ->$
स्ट्रिंग के वहाँ हो गया है कम से कम एक नंबर ->(?=.*\d)
और कम से कम एक अक्षर ->(?=.*[A-Za-z])
और इसे एक संख्या, एक पत्र या निम्न में से एक होना चाहिए: @ # $% ->[[email protected]#$%]
और वहाँ है 8-12 अक्षर में होना करने के लिए ->{8,12}

user557846 के रूप में अपने प्रश्न का टिप्पणी की, मैं भी आप अधिक वर्णों की अनुमति के लिए सुझाव है, मैं आमतौर पर (अगर मैं एक अधिकतम उपयोग करें) ले कम से कम 50 :)

btw, तुम .. this regex tutorial

+3

धन्यवाद! यह मेरे लिए काम कर रहा है। और इसके प्रत्येक भाग को समझाने के लिए धन्यवाद। यह वास्तव में मुझे बेहतर समझने में मदद करता है। मैंने आपके द्वारा सुझाए गए ट्यूटोरियल की भी खोज की और अगली बार जब मैं रेगेक्स से निपट रहा हूं तो यह एक महान संसाधन की तरह दिखता है। और मैंने अधिकतम 50 वर्ण बनाए हैं। –

-1

चरित्र वर्गों को नियमित अभिव्यक्तियों की मूलभूत विशेषता देखें।

+0

मुझे सही दिशा में इंगित करने के लिए धन्यवाद। –

+0

यह सीमा रेखा एक उत्तर नहीं है, विशेष रूप से स्वीकृत उत्तर की तुलना करें। शायद आप किसी को कुछ खोजने के लिए कहने के बजाय इसे विस्तारित कर सकते हैं। धन्यवाद। – Kev

-1
if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[[email protected]#$%]{8,12}$/', $password)) { 
    echo 'the password does not meet the requirements!'; 
    } 

पर एक नज़र ऊपर बयान में क्या संभव पासवर्ड इस प्रकार मौजूद लेने के लिए चाहते हो सकता है ?.

+0

कृपया मेरी मदद करें..क्योंकि मैंने अलग-अलग चरित्र में प्रवेश किया लेकिन यह अस्तित्व में नहीं है .. "पासवर्ड आवश्यकताओं को पूरा नहीं करता है! – christine

+0

अगर (! Preg_match ('/^(? =। * \ D) (? =। * [ए-ज़ा-जेड]) [0-9 ए-ज़ा-जेड! @ # $%] {8,12} $/', $ पासवर्ड)) { गूंज' पासवर्ड आवश्यकताओं को पूरा नहीं करता है! '; } – christine

+0

उपर्युक्त कथन में ... कोई भी शरीर मुझे एक पासवर्ड दे सकता है जो मेरे "preg_match पासवर्ड" के लिए उपयुक्त है .. क्योंकि मैंने पासवर्ड के डीफ़र्न संयोजन में प्रवेश किया है लेकिन यह सबमिट नहीं कर सकता .. – christine

6
preg_match('/^(?=.*\d)(?=.*[@#\-_$%^&+=§!\?])(?=.*[a-z])(?=.*[A-Z])[[email protected]#\-_$%^&+=§!\?]{8,20}$/',$password) 
  • कम से कम एक लोअरकेस चार
  • कम से कम एक अपरकेस चार
  • कम से कम एक अंकों
  • कम से कम एक @ # $ -_ की विशेष संकेत%^& + = §! ?
+0

थॉमस का उत्तर r3bel की तुलना में बेहतर समझाया गया है। – Alreadytakenindeed

0

मैंने इसे hook_form_validate में अपने ड्रूपल कस्टम फॉर्म के साथ किया है, पासवर्ड यहां अक्षरों, संख्याओं और कम से कम एक विशेष चरित्र के 6 वर्ण होना चाहिए।

<? 
if (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])(?=.*[[email protected]#$%])[[email protected]#$%]{6,15}$/', $form_state['values']['pass'])) { 
    form_set_error('pass', t('Password must contain 6 characters of letters, numbers and at least one special character.')); 
} 
?> 
1

मैं थोड़ा और अधिक जटिल जांच

/^(?=.*\d)(?=.*[A-Za-z])(?=.*[A-Z])(?=.*[a-z])(?=.*[ !#$%&'\(\) * +,-.\/[\\]^_`{|}~\"])[0-9A-Za-z !#$%&'\(\) * +,-.\/[\\]^_`{|}~\"]{8,50}$/ 

मूल रूप से मैं पासवर्ड के लिए जाँच 1 अंकों, 1 पूंजी, 1 कम और 1 विशेष वर्ण के लिए के लिए एक पूर्ण regex विकसित किया है। मुझे उम्मीद है कि यह किसी को रेगेक्स की तलाश में मदद करेगा।

0
if (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])(?=.*[[email protected]#$%])[[email protected]#$%] 
{6,15}$/',($_POST['password']))) { 
    $message='Password must contain 6 characters of letters, numbers and 
    at least one special character.'; 
} 
+0

आपको और स्पष्ट होना चाहिए। –

2

मैं r3bel के जवाब पसंद आया, तो मैं इसके साथ एक नाटक था और एक पासवर्ड-चेकिंग समारोह के रूप में निम्नलिखित के साथ समाप्त हो गया:

function password_strength_check($password, $min_len = 8, $max_len = 70, $req_digit = 1, $req_lower = 1, $req_upper = 1, $req_symbol = 1) { 
    // Build regex string depending on requirements for the password 
    $regex = '/^'; 
    if ($req_digit == 1) { $regex .= '(?=.*\d)'; }    // Match at least 1 digit 
    if ($req_lower == 1) { $regex .= '(?=.*[a-z])'; }   // Match at least 1 lowercase letter 
    if ($req_upper == 1) { $regex .= '(?=.*[A-Z])'; }   // Match at least 1 uppercase letter 
    if ($req_symbol == 1) { $regex .= '(?=.*[^a-zA-Z\d])'; } // Match at least 1 character that is none of the above 
    $regex .= '.{' . $min_len . ',' . $max_len . '}$/'; 

    if(preg_match($regex, $password)) { 
     return TRUE; 
    } else { 
     return FALSE; 
    } 
} 

अधिकतम/न्यूनतम लंबाई डिफ़ॉल्ट या समायोज्य हैं, प्रत्येक आवश्यकता पर डिफ़ॉल्ट है, लेकिन इसे बंद कर दिया जा सकता है, और मैं किसी भी प्रतीक का समर्थन करना चाहता था ताकि आखिरी आवश्यकता प्रतीक के निश्चित सेट के बजाय "उपर्युक्त प्रकारों में से कोई भी नहीं" हो।

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

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