मैंने खोजा और खोजा और खेला और खेला और इसके साथ खेला है, हालांकि यह सही नहीं है यह दूसरों को पहले और अंतिम नामों को मान्य करने में मदद कर सकता है जिन्हें एक चर के रूप में प्रदान किया गया है।
मेरे मामले में, वह चर $ नाम है।
मैंने अपने PHP के लिए निम्न कोड का उपयोग किया है:
if (preg_match('/\b([A-Z]{1}[a-z]{1,30}[- ]{0,1}|[A-Z]{1}[- \']{1}[A-Z]{0,1}
[a-z]{1,30}[- ]{0,1}|[a-z]{1,2}[ -\']{1}[A-Z]{1}[a-z]{1,30}){2,5}/', $name)
# there is no space line break between in the above "if statement", any that
# you notice or perceive are only there for formatting purposes.
#
# pass - successful match - do something
} else {
# fail - unsuccessful match - do something
मैं खुद RegEx सीख रहा हूं, लेकिन मेरे पास RegEx दोस्त द्वारा उपलब्ध कराए गए कोड के लिए स्पष्टीकरण है।
यह रहा:
एक शब्द सीमा पर जोर स्थिति «« बी »
नीचे दिए गए रेगुलर एक्सप्रेशन का मिलान करें और उसके मैच को बैकरेन्स नंबर 1
«([AZ] {1} [az] {1,30} [-] {0,1} | [AZ] {1} [- \ '] {} में कैप्चर करें। 1} [AZ] {0,1} [az] {1,30} [-] {0,1}] - [az] {1,2} [- \ '] {1} [AZ] {1} [ az] {1,30}) {2,5} »
2 से 5 बार के बीच, जितनी बार संभव हो, वापस आवश्यकतानुसार (लालची) «{2,5}»
* मुझे इस नोट की RAM के अंकन के साथ कुछ मदद चाहिए *
नोट: मैंने कैप्चरिंग ग्रुप को ही दोहराया। समूह केवल अंतिम पुनरावृत्ति पर कब्जा करेगा। सभी पुनरावृत्तियों को पकड़ने के लिए दोहराया समूह के चारों ओर एक कैप्चरिंग समूह रखें। «{2,5}»
नीचे या तो नियमित अभिव्यक्ति से मिलान करें (अगले विकल्प का केवल तभी प्रयास करें जब यह विफल हो जाए) «[AZ] {1} [az] {1,30} [-] {0,1}»
"A" और "Z" «[AZ] {1}» के बीच की सीमा में किसी एक वर्ण का मिलान करें
बिल्कुल 1 बार «{1}»
"A" और "z" «[az] {1,30}» के बीच की सीमा में किसी एक वर्ण का मिलान करें
एक से 30 बार के बीच, जितनी बार संभव हो, वापस आवश्यकतानुसार (लालची) «{1,30}»
सूची में मौजूद एक एकल चरित्र "-" «[-] {0,1}» का मिलान करें
शून्य और एक बार के बीच, जितनी बार संभव हो, वापस आवश्यकतानुसार (लालची) «{0,1}»
या नीचे दिए गए रेगुलर एक्सप्रेशन नंबर 2 से मेल करें (अगले विकल्प का केवल तभी प्रयास करें जब यह विफल हो जाए) «[AZ] {1} [- \ '] {1} [AZ] {0,1} [az] {1,30} [ -] {0,1} »
"A" और "Z" «[AZ] {1}» के बीच की सीमा में किसी एक वर्ण का मिलान करें
बिल्कुल 1 बार «{1}»
«[- \ '] {1}» नीचे दी गई सूची में मौजूद एक एकल पात्र से मिलान करें
बिल्कुल 1 बार «{1}»
पात्रों में से एक "-" «-» एक 'चरित्र «\'»
"A" और "Z" «[AZ] {0,1}» के बीच की सीमा में किसी एक वर्ण का मिलान करें
शून्य और एक बार के बीच, जितनी बार संभव हो, वापस आवश्यकतानुसार (लालची) «{0,1}»
"A" और "z" «[az] {1,30}» के बीच की सीमा में किसी एक वर्ण का मिलान करें
एक से 30 बार के बीच, जितनी बार संभव हो, वापस आवश्यकतानुसार (लालची) «{1,30}»
सूची में मौजूद एक एकल चरित्र "-" «[-] {0,1}» का मिलान करें
शून्य और एक बार के बीच, जितनी बार संभव हो, वापस आवश्यकतानुसार (लालची) «{0,1}»
या नीचे दिए गए रेगुलर एक्सप्रेशन नंबर 3 से मेल करें (यदि यह पूरा ग्रुप फेल हो जाए तो यह फेल हो जाता है) «[az] {1,2} [- \ '] {1} [AZ] {1} [az] {1,30} »
"A" और "z" «[az] {1,2}» के बीच की सीमा में किसी एक वर्ण का मिलान करें
एक और 2 बार के बीच, जितनी बार संभव हो, वापस आवश्यकतानुसार (लालची) «{1,2}»
"" और "'" «[- \'] {1}» के बीच की सीमा में किसी एक वर्ण का मिलान करें
बिल्कुल 1 बार «{1}»
"A" और "Z" «[AZ] {1}» के बीच की सीमा में किसी एक वर्ण का मिलान करें
बिल्कुल 1 बार «{1}»
"A" और "z" «[az] {1,30}» के बीच की सीमा में किसी एक वर्ण का मिलान करें
एक से 30 बार के बीच, जितनी बार संभव हो, वापस आवश्यकतानुसार (लालची) «{1,30}»
मुझे पता है कि यह मान्यता पूरी तरह से मानती है कि फॉर्म भरने वाले प्रत्येक व्यक्ति का एक पश्चिमी नाम है और इससे दुनिया के अधिकांश लोग समाप्त हो सकते हैं। हालांकि, मुझे लगता है कि यह उचित दिशा में एक कदम है। शायद यह नियमित अभिव्यक्ति गुरुओं के लिए सरलीकृत रूप से संबोधित करने के लिए बहुत बुनियादी है या शायद कोई और कारण है कि मैं अपनी खोजों में उपरोक्त कोड खोजने में असमर्थ था। इस तरह से यह जानने की कोशिश में मैंने बहुत लंबा समय बिताया है, आप शायद इस बात पर ध्यान देंगे कि यदि मेरा परीक्षण नामों को नीचे देखें तो मेरा दिमाग इस सब पर कितना धूमिल होगा।
मैंने निम्नलिखित नामों पर कोड का परीक्षण किया और परिणाम प्रत्येक नाम के दाईं ओर कोष्ठक में हैं।
- स्टीम स्मिथ (विफल)
- स्टीव 3 स्मिथ (असफल)
- STeve स्मिथ (विफल)
- स्टीव स्मिथ (असफल)
- स्टीव Sm1th (स्टीव Sm पर पारित)
- डी आर टू बीवेयर (बीवेयर के लिए पारित)
- जो उड़ा (पारित)
- Hyoung Kyoung वू (उत्तीर्ण)
- माइक ओ'नील (पारित)
- स्टीव जॉनसन-स्मिथ (पारित)
- जोज़ेफ-शोमेज़ेव हेमदेल (गुजर)
- हे हेनरी स्मिथ (गुजर)
- माथिस डी'रास (उत्तीर्ण)
- मार्टिन लूथर किंग जूनियर (गुजर)
- डाउनटाउन-जेम्स ब्राउन (पास)
- डैरेन मैकार्थी (पास)
- जॉर्ज डी फंकमास्टर (पास)
- कर्टिस बी-बॉल बास्केटबॉल (उत्तीर्ण)
- अहमद एल जेफ़े (उत्तीर्ण)
यदि आपके पास मूल नाम हैं, तो काम करने के लिए उपरोक्त कोड के लिए एक से अधिक पांच तक होना चाहिए, यह उन लोगों के समान है जिन्हें मैंने परीक्षण के दौरान उपयोग किया था, यह कोड आपके लिए हो सकता है।
यदि आपके पास कोई सुधार है, तो कृपया मुझे बताएं। मैं अभी शुरुआती चरणों में हूं (पहले कुछ महीनों में RegEx का पता लगाने में।
धन्यवाद और शुभकामनाएं, स्टीव