2012-01-19 9 views
9

सरल समस्या: एक मौजूदा प्रोजेक्ट कस्टम इनपुट फॉर्म का समर्थन करने के लिए मुझे अतिरिक्त फ़ील्ड (नियमित क्षेत्रों के रूप में उन क्षेत्रों पर अतिरिक्त चेक के साथ) जोड़ने की अनुमति देता है। और मुझे एक नया फॉर्म जोड़ने की जरूरत है लेकिन यह प्रोजेक्ट कैसे काम करता है इसे बदल नहीं सकता है। यह फ़ॉर्म आगंतुक को अपना पहला और अंतिम नाम प्लस प्रारंभिक प्रवेश करने की अनुमति देता है। तो RegEx ^[a-zA-Z.]*$ अभी के लिए ठीक काम किया।
फिर किसी ने देखा कि यह इनपुट के रूप में वर्णक्रमीय पात्रों को स्वीकार नहीं करेगा। Ömür जैसे तुर्की नाम को मान्य के रूप में स्वीकार नहीं किया गया था। हालांकि, इसे स्वीकार करने की जरूरत है।नियमित अभिव्यक्ति के साथ diacritics के लिए जाँच

  1. पूरी तरह से चेक को निकालें, जो उपयोगकर्ताओं को कचरा प्रवेश करने की अनुमति होगी:

    तो मैं दो विकल्प हैं।

  2. एक नियमित अभिव्यक्ति लिखें जिसमें डायक्रिटिक अक्षरों को भी शामिल किया जाएगा लेकिन अभी भी कोई अंक, रिक्त स्थान या अन्य गैर-पत्र नहीं होंगे।

चूंकि मैं प्रोजेक्ट का कोड नहीं बदल सकता, मेरे पास केवल इन दो विकल्प हैं। मैं विकल्प 2 पसंद करूंगा लेकिन अब आश्चर्य है कि उचित RegEx क्या होना चाहिए। (परियोजना में लिखा है सी # 4.0।)

+0

आप किसी ऐसे व्यक्ति के बारे में क्या करने जा रहे हैं जो कानूनी रूप से उनके नाम के लिखित रूप को वर्ण अनुक्रम "42 79" के रूप में बदलता है? कुछ लोग उस तरह बेवकूफ सामान करते हैं ... –

+0

ठीक है, "42 79" नाम का कोई व्यक्ति "फॉर्टेवोवो जेवेन्टिनिन" के रूप में दर्ज किया जाएगा। :-) इसके अलावा, सभी देश अपने नागरिकों को यह बेवकूफ होने की अनुमति नहीं देते हैं। :-) –

+1

स्थानीय विनियमन को छोड़कर, यदि मेरा नाम "42 79" था और किसी ने इसे "फॉर्टेवो जेवेन्टिनिन" के रूप में कुछ पॉक्सी डीबी में रखा, तो मैं मांग करता हूं कि वे अपने डीबी को बदल दें क्योंकि यह _formally_ गलत होगा। इस बिंदु पर, लोगों के पास _do_ में बहु-शब्द परिवार के नाम हैं (जो पूंजीकरण के लिए आसान हो सकते हैं या नहीं भी हो सकते हैं) और एस्ट्रोफ़ेस के साथ परिवार के नाम (आयरिश उपनामों में आम) और अन्य चीजों की एक पूरी मेजबानी है। नाम मान्य करना मुश्किल है। –

उत्तर

21

आप अक्षरों के लिए विशिष्ट यूनिकोड बच उपयोग कर सकते हैं - \p{L} (इस A-Za-z पर्वतमाला शामिल होंगे):

^[.\p{L}]*$ 

regularexpressions.info पर देखें:

\ पी {एल} या \ पी {पत्र}

एक यूनिकोड कोड बिंदु से मेल खाता है जिसमें संपत्ति "पत्र" है। गुणों की पूरी सूची के लिए ट्यूटोरियल में यूनिकोड कैरेक्टर प्रॉपर्टी देखें। प्रत्येक यूनिकोड कोड बिंदु में बिल्कुल एक संपत्ति होती है। चरित्र वर्गों के अंदर इस्तेमाल किया जा सकता है।

+1

यदि आप चरित्र वर्ग में '\ p {L}' जोड़ते हैं, तो आप 'a-zA-Z' को हटा सकते हैं। – stema

+0

@stema - अच्छी पकड़। उत्तर अपडेट किया गया। – Oded

+0

अच्छा समाधान! समस्या सुलझ गयी। –

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