2012-04-13 10 views
5

मेरे पास नियमित अभिव्यक्तियों का उपयोग करते हुए उपयोगकर्ता नामों के लिए कुछ बुनियादी सत्यापन हैं, [\w-_]+ जैसे कुछ, और मैं कोरियाई वर्णमाला के लिए समर्थन जोड़ना चाहता हूं, जबकि सत्यापन को अभी भी वही रखना है।रूबी नियमित अभिव्यक्ति में कोरियाई पात्रों से कैसे मिलान कर सकता हूं?

मैं ऐसे {}[][email protected]#$%^&*() आदि के रूप में विशेष वर्ण, अनुमति देने के लिए नहीं करना चाहते हैं, मैं सिर्फ कुछ है कि [a-zA-Z0-9] के अलावा किसी दिए गए वर्णमाला से मेल खाता है साथ \w बदलना चाहते हैं।

जिसका अर्थ है उपयोगकर्ता नाम 안녕 मान्य होना चाहिए, लेकिन 안녕[] नहीं होना चाहिए।

मुझे रूबी 1.9 में ऐसा करने की ज़रूरत है।

उत्तर

8

आप इस तरह अमान्य वर्ण के लिए परीक्षण कर सकते हैं काम करना चाहिए:

#encoding: utf-8 
def valid_name?(name) 
    !name.match(/[^a-zA-Z0-9\p{Hangul}]/) 
end 

ar = %w(안녕 name 안녕[].) 
ar.each{|name| puts "#{name} is #{valid_name?(name) ? "valid" : "invalid"}."} 
# 안녕 is valid. 
# name is valid. 
# 안녕[]. is invalid. 
+0

नीचे देखें - आपको re जैसे नामों को कैप्चर करने के लिए/[^ a-zA-Z0-9 \ p {Hangul} \ p {Han}]/को अपने regex का विस्तार करना चाहिए। साथ ही, यह रेगेक्स अभी भी उन लोगों में डैश के नामों का समर्थन नहीं करता है, जैसे सो-यंग किम। – Sprachprofi

+0

सवाल कोरियाई चरित्र/वर्णमाला के लिए पूछता है। चीनी पात्रों के साथ कोरियाई नाम मेरे लिए नया है। लेकिन ओपी उपयोगकर्ता नामों को संदर्भित करता है, असली नाम नहीं, और मुझे लगता है कि वह नियम निर्धारित कर रहा है। – steenslag

+0

\ पी {हान} कोरियाई, जापानी और चीनी के लिए आम है। लगभग सभी कोरियाई नाम हंजा में लिखे जाते थे और वे अभी भी व्यापार कार्ड पर आम हैं। वे नेट पर कम आम हैं, लेकिन व्यापार के लिए लोगों को यह बताने में बुरा है कि उनका पासपोर्ट नाम मान्य नाम नहीं है। यह भी देखें http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ – Sprachprofi

2

मुझे लगता है कि आप द्वारा [:word:]

/^[[:word:]\-_]+$/\w की जगह ले सकता

+2

हालांकि, यह सभी शब्द वर्णों से मेल खाएगा। – gmalette

0

अमान्य वर्ण के लिए मिलान आपके सबसे अच्छा विकल्प है, क्योंकि वहाँ रास्ते बहुत सारे मान्य कोरियाई पात्र हैं - यह तकनीकी रूप से एक वर्णमाला है लेकिन एक-वर्ण-प्रति-अक्षर के रूप में कम्प्यूटरीकृत है, और इसके अतिरिक्त हजारों चीनी ऋण पात्र हैं (हान जेए) जो भी मान्य होना चाहिए।

+0

सूची सीमित और आसानी से मेल खाती है। और \ p {Hangul} एक वैध रेगेक्स ब्लॉक – dda

+0

\ p {हंगुल} हांजा पर कब्जा नहीं करता है, फिर भी हंजा अभी भी नाम लिखने के लिए उपयोग किया जाता है। कम से कम आपको \ p {Hangul} और \ p {Han} दोनों की जांच करनी होगी। – Sprachprofi

+1

दुर्भाग्यवश चीनी वर्णों का अब कोरियाई में कभी भी उपयोग नहीं किया जाता है, यहां तक ​​कि नाम बताते समय भी ... – dda

6

इस प्रयास करें:

[가 - 힣]

यह U+AC00 to U+D7A3 से हर चरित्र है, जो शायद आपकी रुचि के लिए पर्याप्त है मेल खाता है। (मुझे नहीं लगता कि आपको पुराने हैंगुल पात्रों और सामान की आवश्यकता होगी)

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