2011-03-02 13 views
5

आईआरसी उपनाम से मेल खाने के लिए मैं नियमित अभिव्यक्ति का उपयोग कैसे करूं? यह रूबी में किया जा रहा है अगर यह एक फर्क पड़ता है (शायद यह रेगेक्स के सिंटैक्स के साथ होगा, लेकिन कौन जानता है।)आईआरसी उपनाम से मेल खाने के लिए नियमित अभिव्यक्ति

संपादित करें: एक आईआरसी उपनाम में कोई भी अक्षर, संख्या या निम्न वर्णों में से कोई भी हो सकता है : < - [ ] \^ { }

+2

नियम क्या हैं? – codaddict

+0

रूबी पीसीआरई का उपयोग करता है, है ना? http://stackoverflow.com/questions/3924648/pcre-expression-for-irc-nicknames –

+1

आईआरसी उपनाम में क्या हो सकता है और नहीं हो सकता है? किस स्थिति में? अब तक तुमने क्या प्रयास किये हैं? क्या काम नहीं किया? –

उत्तर

13
# If you are testing a single string 
irc_nick_re = /\A[a-z_\-\[\]\\^{}|`][a-z0-9_\-\[\]\\^{}|`]*\z/i 

# If you are scanning them out of a larger string 
irc_nick_re = /(?<=[^a-z_\-\[\]\\^{}|`])[a-z_\-\[\]\\^{}|`][a-z0-9_\-\[\]\\^{}|`]*/i 

ऊपर एकल चरित्र नाम की अनुमति देता है। यदि दो वर्णों की आवश्यकता है, तो * से + बदलें। यदि तीन वर्ण (या अधिक) की आवश्यकता है, तो इसे {2,} पर बदलें, जहां '2' न्यूनतम संख्याओं की संख्या शून्य है।

यदि अधिकतम वर्ण हैं (उदाहरण के लिए, EFNet केवल उपनामों को अनुमति देता है 9 अक्षरों में अकेला, जबकि फ्रीनोड 16 अक्षरों तक लंबे समय तक निकलता है) तो आप अल्पविराम के बाद उस संख्या (शून्य 1) ​​को शामिल कर सकते हैं। उदाहरण के लिए:

# Validate nicknames that are between 3 and 16 characters long (inclusive) 
irc_nick_re = /\A[a-z_\-\[\]\\^{}|`][a-z0-9_\-\[\]\\^{}|`]{2,15}\z/i 
+3

मुझे किसी भी लोकप्रिय आईआरसी नेटवर्क के बारे में पता नहीं है जो उपनामों में "<" को अनुमति देता है। आईआरसीनेट, फ्री नोड, क्वाकनेट, ओएफटीसी, अंडरनेट और ईएफनेट सभी इसे अस्वीकार करते हैं। साथ ही, आपको उपनाम की शुरुआत में एक अंक से मेल नहीं करना चाहिए, क्योंकि कोई आईआरसी नेटवर्क या तो अनुमति देता है। इसके अलावा, आप "|", "' ", और" _ "गायब हैं, जिन्हें अनुमति है। और "\ d" इसके बजाय "0-9" होना चाहिए, क्योंकि ये केवल एकमात्र अंक हैं, न कि यूनिकोड अंक। – Hinrik

+0

@ हिनरिक महान अंक! मैं ओपी की आवश्यकताओं के आधार पर मेल खाता था, लेकिन असली दुनिया के कार्यान्वयन के खिलाफ परीक्षण नहीं कर रहा था। हालांकि, ध्यान दें कि ['\ d' रूबी में यूनिकोड अंकों से मेल नहीं खाता है] (http://stackoverflow.com/questions/6998713/scanning-for-unicode-numbers-in-a-string-with-d)। – Phrogz

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

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