पहले और अंतिम नाम के लिए नियमित अभिव्यक्ति


124

वेबसाइट सत्यापन उद्देश्यों के लिए, मुझे पहले नाम और अंतिम नाम सत्यापन की आवश्यकता है।

पहले नाम के लिए, इसमें केवल अक्षर होना चाहिए, रिक्त स्थान के साथ कई शब्द हो सकते हैं, और इसमें कम से कम तीन वर्ण होते हैं, लेकिन अधिकतम 30 वर्ण होते हैं। खाली स्ट्रिंग को मान्य नहीं किया जाना चाहिए (जैसे जेसन , जेसन , जेसन स्मिथ , जेसन स्मिथ , जेसन , जेसन स्मिथ , जेसन स्मिथ और जेसन स्मिथ )।

अंतिम नाम के लिए, यह एक एकल शब्द होना चाहिए, केवल अक्षर, कम से कम तीन वर्णों के साथ, लेकिन अधिकतम 30 वर्णों पर। खाली तारों को मान्य नहीं किया जाना चाहिए (उदाहरण के लिए लाज्लो , लाज्लो और LAZSLO )।


10
'जो' जैसे पहले नामों के बारे में क्या?
a'r

6
बस एक टिप्पणी: हाइफ़न लास्ट में आम हैं ... शायद अन्तरिक्ष के साथ भी नाम हैं,
tanascius

2
नोट: एक रेगुआरटेक्प्रिवलिविडेटर खाली सूचनाओं को नजरअंदाज करेगा: यह वह हो सकता है या नहीं जो आप चाहते हैं।
हंस के Hans

4
यदि संभव हो तो, जब तक आपके पास पहले और अंतिम नाम की आवश्यकता के लिए एक आश्चर्यजनक सम्मोहक कारण नहीं है, बस एक "नाम" फ़ील्ड प्रदान करें। kalzumeus.com/2010/06/17/…
क्रिस

जवाबों:


195

जैसे नामों के बारे में मत भूलना:

  • मैथियास डी'आरास
  • मार्टिन लूथर किंग जूनियर।
  • हेक्टर सॉसेज-हॉसेन

यह ज्यादातर चीजों के लिए चाल करना चाहिए:

/^[a-z ,.'-]+$/i

या सुपर स्वीट यूनिकोड के साथ अंतर्राष्ट्रीय नामों का समर्थन करें:

/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]+$/u


4
मैं इन regexps में विशेष वर्णों से बचूंगा - विशेषकर .(दशमलव बिंदु / बिंदु / पूर्ण विराम) क्योंकि यह regexp वाइल्डकार्ड =) है
Joel Purra

30
आप सभी संभव राष्ट्रीय पात्रों को मान्य नहीं कर सकते। उदाहरण के लिए हंगरी के पात्र őŐűŰगायब हैं, पोलिश पात्रों के łŁसाथ-साथ कई लिथुआनियाई और लातवियाई पात्रों का उल्लेख नहीं है। बल्कि एक ऐसे पुस्तकालय को खोजने की कोशिश करें जो विदेशी पात्रों को उचित उच्चारण-कम संस्करण में बदल दे, फिर /^[a-z ,.'-]+$/iरेक्सएक्सपी लिखिए ।
गैबर्सच

69
तो क्या 陳大文यहाँ मान्य नाम नहीं है?
एल्विन वोंग

16
यूनिकोड के लिए, उपयोग /^[\p{L}'][ \p{L}'-]*[\p{L}]$/u, हालांकि बहुत क्षमा।
फ्रेडरिक क्रौटवाल्ड

4
AZ को मूल उदाहरण में शामिल करने की आवश्यकता नहीं है क्योंकि अभिव्यक्ति के बाद i संशोधक का अर्थ है मामले की अनदेखी करना।
महानि

73

आप पहले और अंतिम नाम के प्रारूप पर गलत धारणा बनाते हैं। शायद यह बेहतर है कि नाम की पुष्टि न करें, यह जाँचने के अलावा कि यह खाली है।


टिप्पणी होनी चाहिए थी।
14

32

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

^[\w'\-,.][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$

समर्थित वर्ण:

abcdefghijklmnopqrstwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
áéíóúäëïöüÄ'
陳大文
łŁőŐűŰZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųū
ÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁ
ŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ.-
ñÑâê都道府県Федерации
আবাসযোগ্য জমির걸쳐 있는

2
सभी उत्तरों में से यह एक एनजी 4 का उपयोग कर एक आकर्षण की तरह काम करता है
डेनिस एम।

1
आपका regex 2 वर्ण स्ट्रिंग पर विफल है। मुझे लगता है कि इसने इसे ठीक कर दिया^[\w'\-,.]*[^_!¡?÷?¿\/\\+=@#$%ˆ&*(){}|~<>;:[\]]*$
TKA

राष्ट्रीय पात्रों का समर्थन किया जाता है लेकिन पहली स्थिति में नहीं। मैं अभिव्यक्ति को ^[^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$
बदलूंगा

18

मैंने नामों से निपटने के लिए एक कस्टम रेगेक्स बनाया है:

मैंने इस प्रकार के नामों को आजमाया है और काम को सही पाया है

  1. जॉन स्मिथ
  2. जॉन डी'लार्गी
  3. जॉन डो-स्मिथ
  4. जॉन डो स्मिथ
  5. हेक्टर सॉसेज-हॉसेन
  6. मैथियास डी'आरास
  7. मार्टिन लूथर किंग
  8. ऐ वोंग
  9. चाओ चांग
  10. अलजबेटा बारा

मेरा RegEx इस तरह दिखता है:

^([a-zA-Z]{2,}\s[a-zA-Z]{1,}'?-?[a-zA-Z]{2,}\s?([a-zA-Z]{1,})?)

MVC4 मॉडल:

[RegularExpression("^([a-zA-Z]{2,}\\s[a-zA-Z]{1,}'?-?[a-zA-Z]{2,}\\s?([a-zA-Z]{1,})?)", ErrorMessage = "Valid Charactors include (A-Z) (a-z) (' space -)") ]

\\भागने के पात्रों के लिए कृपया ध्यान दें

आप में से जो RegEx के लिए नए हैं मैंने सोचा कि मैं एक स्पष्टीकरण शामिल करूंगा।

^               // start of line
[a-zA-Z]{2,}    // will except a name with at least two characters
\s              // will look for white space between name and surname
[a-zA-Z]{1,}    // needs at least 1 Character
\'?-?           // possibility of **'** or **-** for double barreled and hyphenated surnames
[a-zA-Z]{2,}    // will except a name with at least two characters
\s?             // possibility of another whitespace
([a-zA-Z]{1,})? // possibility of a second surname

मेरे पास एक इकाई परीक्षण है जो कई नामों का परीक्षण करता है, फिर कई चीजें जो नाम नहीं हैं। नॉट लिस्ट में पहली प्रविष्टि के रूप में 'टेस्ट टोकन' है। इससे मेल खाता है।
रोब

यह लगभग मैं क्या देख रहा था। मुझे लगता है (शायद गलत तरीके से) कि आप एक फ्रांसीसी आदमी हैं। और एक मामला संभाल नहीं रहा है कि आप फ्रेंच में मुठभेड़ कर सकते हैं: जीन-पियरे, मैरी-शार्लोट, आदि जैसे नामों की रचना ... मैं रेग के लिए नया हूँ, लेकिन मुझे लगता है कि एक -? जैसे आपने अंतिम नाम के लिए, 2 पहले शब्दों के बीच में काम किया था।

हाय वंश, फ्रांसीसी नहीं है, हालांकि मेरे पास एक फ्रांसीसी नाम है। हाँ। मैंने इसका परीक्षण नहीं किया है, हालाँकि आपको पहले [-] में इतना बदलाव लाने में सक्षम होना चाहिए: ^ ([a-zA-Z] {२,} \ _ [a-zA-z] {१,} ’ ? -? [a-zA-Z] {2,} \ _? ([a-zA-Z] {,}}?) TO: ^ ([a-zA-Z -] {2,} \ s [a-zA-z] {1,} '? -? - a-zA-Z] {2,} \ s? ([a-zA-Z] {1,}?)
फ्रेंकोइस मुलर

16

मैंने खोजा और खोजा और खेला और खेला और इसके साथ खेला है, हालांकि यह सही नहीं है यह दूसरों को पहले और अंतिम नामों को मान्य करने में मदद कर सकता है जिन्हें एक चर के रूप में प्रदान किया गया है।

मेरे मामले में, वह चर $ नाम है।

मैंने अपने 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}»

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

मैंने निम्नलिखित नामों पर कोड का परीक्षण किया और परिणाम प्रत्येक नाम के दाईं ओर कोष्ठक में हैं।

  1. स्टीम स्मिथ (विफल)
  2. स्टीव 3 स्मिथ (असफल)
  3. STeve स्मिथ (विफल)
  4. स्टीव स्मिथ (असफल)
  5. स्टीव Sm1th (स्टीव Sm पर पारित)
  6. डी आर टू बीवेयर (बीवेयर के लिए पारित)
  7. जो उड़ा (पारित)
  8. Hyoung Kyoung वू (उत्तीर्ण)
  9. माइक ओ'नील (पारित)
  10. स्टीव जॉनसन-स्मिथ (पारित)
  11. जोज़ेफ-शोमेज़ेव हेमदेल (गुजर)
  12. हे हेनरी स्मिथ (गुजर)
  13. माथिस डी'रास (उत्तीर्ण)
  14. मार्टिन लूथर किंग जूनियर (गुजर)
  15. डाउनटाउन-जेम्स ब्राउन (पास)
  16. डैरेन मैकार्थी (पास)
  17. जॉर्ज डी फंकमास्टर (पास)
  18. कर्टिस बी-बॉल बास्केटबॉल (उत्तीर्ण)
  19. अहमद एल जेफ़े (उत्तीर्ण)

यदि आपके पास मूल नाम हैं, तो काम करने के लिए उपरोक्त कोड के लिए एक से अधिक पांच तक होना चाहिए, यह उन लोगों के समान है जिन्हें मैंने परीक्षण के दौरान उपयोग किया था, यह कोड आपके लिए हो सकता है।

यदि आपके पास कोई सुधार है, तो कृपया मुझे बताएं। मैं अभी शुरुआती चरणों में हूं (पहले कुछ महीनों में RegEx का पता लगाने में।

धन्यवाद और शुभकामनाएं, स्टीव


1
क्या "द फोर्थ" या "IV" जैसी चीजें इसके साथ काम करेंगी?
मजीदरीफ

11

पहले नाम होगा

"([a-zA-Z]{3,30}\s*)+"

यदि आपको 30 अक्षरों से छोटा होने के लिए पूरे पहले नाम वाले भाग की आवश्यकता है, तो आपको उस अलग से जांचने की आवश्यकता है, मुझे लगता है। अभिव्यक्ति ".{3,30}"को ऐसा करना चाहिए।

आपकी अंतिम नाम आवश्यकताओं का अनुवाद होगा

"[a-zA-Z]{3,30}"

लेकिन आपको इनकी जांच करनी चाहिए। रिक्त स्थान वाले अंतिम नाम बहुत सारे हैं।


क्या यह रिक्त स्थान के बीच की जाँच करता है?
Y_Y

2
ओ'कॉनर के बारे में क्या ? एपोस्ट्रोफ को भी शामिल करने की आवश्यकता है।
अंतरिक्ष यात्री

1
बहुत अधूरा है। पहला नाम हाइफ़न के साथ "जीन-क्लाउड" हो सकता है। अंतिम नाम उद्धरण के साथ "डीएआरसी" हो सकता है। साथ ही, अगर "फ्रांस्वा" पहला नाम है तो क्या होगा?
बार्ट

1
"अल" के बारे में क्या? मान्य प्रथम नाम। बस दो अक्षर। चीनी, रूसी, हिंदी नामों के बारे में क्या? यूरोपीय नामों के बारे में क्या?
क्रिश्चियन हुजर

यह बहुत सारे गैर-अंग्रेजी या गैर-लैटिन?) नामों के लिए काम नहीं करेगा
ओल्डबॉय

7

जैसा कि माएक ने कहा:

जैसे नामों के बारे में मत भूलना:

मैथियास डी'आरास

मार्टिन लूथर किंग जूनियर।

हेक्टर सॉसेज-हॉसेन

और जैसे मामलों को हटाने के लिए:

..Mathias

मार्टिन किंग, जूनियर-

यह अधिक मामलों को कवर करेगा:

^([a-z]+[,.]?[ ]?|[a-z]+['-]?)+$

अगर मैं अपने चरित्र की लंबाई को सीमित करना चाहता हूं तो उसके लिए कोड क्या हो सकता है?
G.Abhisek

1
हाँ मार्टिन लूथर किंग जूनियर एक मैच के रूप में वापसी करता है, और इसी तरह किंग हेनरी आठवें स्थान पर रहता है।
स्टीव किंजे

7

मैं उस ऐप पर काम कर रहा हूं जो अंतर्राष्ट्रीय पासपोर्ट (ICAO) को मान्य करता है। हम केवल अंग्रेजी वर्णों का समर्थन करते हैं। जबकि अधिकांश विदेशी राष्ट्रीय पात्रों को लैटिन वर्णमाला जैसे कि è ई द्वारा एक चरित्र द्वारा दर्शाया जा सकता है, ऐसे कई राष्ट्रीय चरित्र हैं, जिनके लिए प्रतिनिधित्व करने के लिए एक अतिरिक्त पत्र की आवश्यकता होती है जैसे कि जर्मन umlaut जिसे पत्र में जोड़ने के लिए एक 'ई' की आवश्यकता होती है जैसे eg एई द्वारा।

यह हमारे द्वारा उपयोग किए जाने वाले पहले और अंतिम नामों के लिए जावास्क्रिप्ट रेगेक्स है:

/^[a-zA-Z '.-]*$/

अंतरराष्ट्रीय पासपोर्ट पर पात्रों की अधिकतम संख्या 31 तक है । हम रेक्स में इसे शामिल करने के बजाय बेहतर शब्द त्रुटि संदेशों के लिए अधिकतम = "31" का उपयोग करते हैं।

एंगुलरजेएस 1.6 में फॉर्म और एरर हैंडलिंग के साथ हमारे कोड से एक स्निपेट है:

class PassportController {
  constructor() {
    this.details = {};
    // English letters, spaces and the following symbols ' - . are allowed
    // Max length determined by ng-maxlength for better error messaging
    this.nameRegex = /^[a-zA-Z '.-]*$/;
  }
}

angular.module('akyc', ['ngMessages'])
  .controller('PassportController', PassportController);
 
.has-error p[ng-message] {
  color: #bc111e;
}

.tip {
  color: #535f67;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.6/angular-messages.min.js"></script>

<main ng-app="akyc" ng-controller="PassportController as $ctrl">
  <form name="$ctrl.form">

    <div name="lastName" ng-class="{ 'has-error': $ctrl.form.lastName.$invalid} ">
        <label for="pp-last-name">Surname</label>
        <div class="tip">Exactly as it appears on your passport</div>
        <div ng-messages="$ctrl.form.lastName.$error" ng-if="$ctrl.form.$submitted" id="last-name-error">
          <p ng-message="required">Please enter your last name</p>
          <p ng-message="maxlength">This field can be at most 31 characters long</p>
          <p ng-message="pattern">Only English letters, spaces and the following symbols ' - . are allowed</p>
        </div>
        
        <input type="text" id="pp-last-name" ng-model="$ctrl.details.lastName" name="lastName"
               class="form-control" required ng-pattern="$ctrl.nameRegex" ng-maxlength="31" aria-describedby="last-name-error" />
      </div>

      <button type="submit" class="btn btn-primary">Test</button>

  </form>
</main>


@danieltakeshi आपने मेरे रेगेक्स का उपयोग नहीं किया। इसका उपयोग करें: / ^ [a-zA-Z '.-] * $ /
अलेक्जेंडर बुरकेविच

5

मैं उपयोग करता हूं:

/^(?:[\u00c0-\u01ffa-zA-Z'-]){2,}(?:\s[\u00c0-\u01ffa-zA-Z'-]{2,})+$/i

और कुछ अन्य साधनों का उपयोग करके अधिकतम गति के लिए परीक्षण करें


5

मेरे लिए यह रेगेक्स काम (कोणीय 8 में उपयोग कर रहा था):

([a-zA-Z',.-]+( [a-zA-Z',.-]+)*){2,30}

यहां छवि विवरण दर्ज करें

यह अवैध होगा यदि: -

  1. कोई भी व्हाट्सएप नाम की शुरुआत या अंत
  2. समझे प्रतीक जैसे @
  3. 2 से कम या 30 से अधिक

उदाहरण अमान्य प्रथम नाम (व्हाट्सएप)

यहां छवि विवरण दर्ज करें

उदाहरण मान्य प्रथम नाम:

यहां छवि विवरण दर्ज करें


6
क्या 'के बारे में' Björk Guðmundsdóttir '?
मैरिज जमरो

4

सरलता के लिए, आप उपयोग कर सकते हैं:

(.*)\s(.*)

इसके बारे में मुझे जो बात पसंद है वह यह है कि अंतिम नाम हमेशा पहले नाम के बाद होता है, इसलिए यदि आप इस मिलान वाले समूहों को डेटाबेस में दर्ज करने जा रहे हैं, और नाम जॉन एम। स्मिथ है, तो पहला समूह जॉन एम होगा। , और दूसरा समूह स्मिथ होगा।


2
^\p{L}{2,}$

^ एक लाइन की शुरुआत में स्थिति का उल्लेख करता है।

\ p {L} किसी भी भाषा के किसी भी प्रकार के अक्षर से मेल खाता है

{२,} परिमाणक - २ और असीमित समयों के बीच मेल खाता है, जितनी बार संभव हो उतनी बार वापस देनी चाहिए (लालची)

$ एक पंक्ति के अंत में स्थिति का दावा करता है

तो यह किसी भी भाषा में एक नाम होना चाहिए जिसमें संख्या या अन्य वर्णों के बिना कम से कम 2 अक्षर (या प्रतीक) हों।


ध्यान रखें कि कुछ अक्षर जैसे 'और - नामों में मान्य हैं।
मथिजर्स

1

इसलिए, ग्राहक के साथ हम इस पागल रेगेक्स को बनाते हैं:

(^$)|(^([^\-!#\$%&\(\)\*,\./:;\?@\[\\\]_\{\|\}¨ˇ“”€\+<=>§°\d\s¤®™©]| )+$)

1

पहले और अंतिम नामों के लिए वास्तव में केवल 2 चीजें हैं जिनकी आपको तलाश करनी चाहिए:

  1. लंबाई
  2. सामग्री

यहाँ मेरी नियमित अभिव्यक्ति है:

var regex = / ^ ईएसए-Za-z- ग्रेडिंग 3,20 रूपान्तरण?=.*\d)/

1. लंबाई

यहां {3,20} स्ट्रिंग की लंबाई 3 और 20 अक्षरों के बीच है।

2. सामग्री

वर्ग कोष्ठक [A-Za-z] के बीच की जानकारी अपरकेस और लोअरकेस वर्णों को अनुमति देती है। बाद के सभी प्रतीकों (-।) को भी अनुमति है।


1

यही है वह जो मेरे द्वारा उपयोग किया जाता है।

यह रेगेक्स न्यूनतम वर्णों वाले केवल नामों को स्वीकार करता है, से A-Z a-z ,space and -

नाम उदाहरण:

Ionut Ionete, Ionut-Ionete Cantemir, Ionete Ionut-Cantemirm Ionut-Cantemir Ionete-Second

नाम के चरित्र की सीमा है 3. यदि आप इसे बदलना चाहते हैं, तो {3,} से {6,} को संशोधित करें

([a-zA-Z\-]+){3,}\s+([a-zA-Z\-]+){3,}

2
Ä å ö Ä? आदि के बारे में क्या? स्वीडिश नामों में बहुत आम है। अंतिम नाम ओ'कोनर भी विफल हो जाएगा और दोहरे नाम वाले मुद्दे भी देंगे। यह उन लोगों के लिए बहुत निराशाजनक होगा जिनके पास ऐसे वैध नाम हैं।
विल्ट

ओ'कोनर जैसे नामों में प्रेरितों के बारे में क्या?
फोगमिस्टर

मेरी अभिव्यक्ति माइकल जॉर्डन ओ'रिली जूनियर को एक वैध नाम के रूप में
लौटाती है

0

निम्न अभिव्यक्ति UTF-16 द्वारा समर्थित किसी भी भाषा पर काम करेगी और यह सुनिश्चित करेगी कि नाम के कम से कम दो घटक हों (अर्थात प्रथम + अंतिम), लेकिन बीच के नामों में से किसी भी संख्या को अनुमति देगा।

/^(\S+ )+\S+$/u

इस लेखन के समय ऐसा लगता है कि अन्य कोई भी उत्तर सभी मानदंडों को पूरा नहीं करता है। यहां तक ​​कि ^\p{L}{2,}$, जो सबसे नज़दीकी है, छोटा पड़ जाता है क्योंकि यह "अदृश्य" वर्णों से भी मेल खाएगा, जैसे कि U+FEFF(जीरो चौड़ाई नो-ब्रेक स्पेस)।


regexr.com के लिए जावास्क्रिप्ट पास नहीं करता है 1) यूनिकोड सुविधा को चेतावनी देना सभी ब्राउज़रों में समर्थित नहीं हो सकता है। 2) यह भी regex में संख्या की अनुमति दे रहा है। उदाहरण: माइकल डिमिटम्सडास 2123123
माइकल

0

अधिकतम अनुकूलता के लिए, इन समाधानों को आज़माएँ, जैसा कि मैंने पहले ही यहाँ पोस्ट किया है :

जावास्क्रिप्ट:

var nm_re = /^(?:((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-.\s])){1,}(['’,\-\.]){0,1}){2,}(([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-. ]))*(([ ]+){0,1}(((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){1,})(['’\-,\.]){0,1}){2,}((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){2,})?)*)$/;

एचटीएमएल 5:

<input type="text" name="full_name" id="full_name" pattern="^(?:((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-.\s])){1,}(['’,\-\.]){0,1}){2,}(([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-. ]))*(([ ]+){0,1}(((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){1,})(['’\-,\.]){0,1}){2,}((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){2,})?)*)$" required>


0

यह मेरे लिए काम करने लगता है:

[\S]{2,} [\S]{2,}( [\S]{2,})*

-1

Php में preg_match का उपयोग करके एक सरल कार्य

<?php
function name_validation($name) {
    if (!preg_match("/^[a-zA-Z ]*$/", $name) === false) {
        echo "$name is a valid name";
    } else {
        echo "$name is not a valid name";
    }
}

//Test
name_validation('89name');
?>


-2

यदि आप चाहते हैं कि पूरा पहला नाम 3 और 30 अक्षरों के बीच हो, जिसमें व्यक्तिगत शब्दों पर कोई प्रतिबंध नहीं है, तो यह कोशिश करें:

[a-zA-Z ]{3,30}

खबरदार कि यह सभी विदेशी पत्रों को é, è, à, es के रूप में शामिल नहीं करता है।

यदि आप प्रत्येक व्यक्तिगत शब्द पर लागू होने के लिए 3 से 30 अक्षरों की सीमा चाहते हैं, तो Jens regexp काम करेगा।


-2
var name = document.getElementById('login_name').value; 
if ( name.length < 4  && name.length > 30 )
{
    alert ( 'Name length is mismatch ' ) ;
} 


var pattern = new RegExp("^[a-z\.0-9 ]+$");
var return_value = var pattern.exec(name);
if ( return_value == null )
{
    alert ( "Please give valid Name");
    return false; 
} 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.