यहाँ प्रत्यक्ष जवाब नहीं है। मैंने उन्हें छोटा रखा क्योंकि वे रेगेक्स की समझ के बिना समझ में नहीं आएंगे। यह समझ नियमित-expressions.info पर सबसे अच्छी तरह से प्राप्त की जाती है। मैं आपको सलाह देता हूं कि वहां सूचीबद्ध regex helper tools भी प्रयास करें, वे आपको प्रयोग करने की अनुमति देते हैं - जब आप पैटर्न को संपादित करते हैं तो लाइव कैप्चरिंग/मेलिंग देखें, बहुत उपयोगी।
1: कैरट ^
एक लंगर, इसका मतलब है "भूसे के ढेर/स्ट्रिंग/लाइन की शुरुआत है।"
- एक कैरट एक चरित्र वर्ग
[]
अंदर पहले प्रतीक है, तो यह एक अलग अर्थ है: यह वर्ग को नकारता। (तो [^ab]
में कैरट करता है कि वर्ग मैच जो कुछ भी अब नहीं है)
2: डॉट .
और तारांकन *
दो अलग-अलग प्रयोजनों की सेवा:
- डॉट किसी भी एक वर्ण से मेल खाता है न्यूलाइन
\n
को छोड़कर।
- तारांकन कहता है "शून्य या कई पूर्ववर्ती प्रकार की अनुमति दें"।
इन दो .*
के रूप में जोड़ दिया जाता है जब यह मूल रूप से लिखा है "शून्य या कुछ भी की अधिक एक नई पंक्ति जब तक या किसी अन्य नियम प्रभाव में आता है"।
7: डॉलर $
विपरीत कार्य के साथ, देखभाल के समान एक लंगर भी है: "घास का अंत"।
संपादित करें:
सरल कोष्ठकों ()
कुछ चारों ओर बनाता है यह एक समूह। यहां आपके पास (?=)
है जो एक दावा है, विशेष रूप से सकारात्मक आगे बढ़ने के लिए देखें। यह सब जांचता है कि क्या वास्तव में अंदर है जो वास्तव में हैरस्टैक में वर्तमान कर्सर स्थिति से आगे है। अभी तक मेरे साथ है?
उदाहरण:foo(?=bar)
मैचों foo
केवल bar
के बाद। bar
कभी मेल नहीं खाता है, केवल foo
लौटा दिया गया है।
इस के साथ
मन में, चलो अपने रेगुलर एक्सप्रेशन से काटना करते हैं:
/^.*(?=.{4,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$/
Reads as:
^.* From Start, capture 0-many of any character
(?=.{4,}) if there are at least 4 of anything following this
(?=.*[0-9]) if there is: 0-many of any, ending with an integer following
(?=.*[a-z]) if there is: 0-many of any, ending with a lowercase letter following
(?=.*[A-Z]) if there is: 0-many of any, ending with an uppercase letter following
.*$ 0-many of anything preceding the End
आप बात पासवर्ड पात्रों के आदेश कहते हैं - यह मेरे परीक्षण में नहीं है। नीचे टेस्ट स्क्रिप्ट देखें। उम्मीद है कि यह एक या दो चीज़ों को मंजूरी दे दी है। आप देख रहे हैं एक और regex जो थोड़ा अधिक क्षमाशील है के लिए, जाँच और रेगुलर एक्सप्रेशन के परीक्षण के लिए regex password validation
<pre>
<?php
// Only the last 3 fail, as they should. You claim the first does not work?
$subjects = array("aaB1", "Baa1", "1Baa", "1aaB", "aa1B", "aa11", "aaBB", "aB1");
foreach($subjects as $s)
{
$res = preg_match("/^.*(?=.{4,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$/", $s, $matches);
echo "result: ";
print_r($res);
echo "<br>";
print_r($matches);
echo "<hr>";
}
उत्कृष्ट ऑनलाइन उपकरण देखें: https://regex101.com/
रेग एक्स ट्यूटोरियल के लिए Google खोजें –
आपके वास्तविक प्रश्न से संबंधित नहीं है, लेकिन पासवर्ड के लिए लोगों को अत्यधिक जटिल पैटर्न रखने के लिए मजबूर करना संभवतः उन्हें कहीं भी लिखना होगा - पासवर्ड की सुरक्षा को समाप्त करना। – jprofitt
चूंकि आप इस PHP को टैग कर रहे हैं: http://php.net/manual/en/book.pcre.php –