2011-11-15 13 views
21

अनुमति देने के लिए मेरे पास है निम्नलिखित regex ^[a-zA-Z0-9]+$ जो अल्फा न्यूमेरिक वर्णों की अनुमति होगी। यहां समस्या यह है कि अगर मैं केवल 8 9 7687 "जैसे अंकीय चरित्र दर्ज करता हूं, तो रेगेक्स अभी भी मेल खाता है। मैं नहीं चाहता कि ऐसा हो। कम से कम एक पाठ चरित्र होना चाहिए और इसे टेक्स्ट वर्ण से शुरू करना चाहिए। उदाहरण के लिए "a343" या "a98bder" या "a4544fgf343"सी # Regex केवल अल्फा न्यूमेरिक

यह अच्छा होगा अगर आप इसके लिए मेरे रेगेक्स को बेहतर बनाने में मेरी सहायता कर सकें।

+2

एक अलग रूप में के रूप में, के साथ "कम से कम एक वर्णमाला होना चाहिए और यह एक वर्णमाला के साथ शुरू कर देना चाहिए", बाद इसका मतलब है कि पूर्व हमेशा सच हो जाएगा। तो _requirement_ है "यह एक वर्णमाला के साथ शुरू होना चाहिए"। अब वोट दें रोलैंड जाना क्योंकि वह यह काफी अच्छी तरह से समझ :-) – paxdiablo

उत्तर

33

ध्वनि आप की तरह हैं:

^[a-zA-Z][a-zA-Z0-9]*$ 
4
^[a-zA-Z][a-zA-Z0-9]*$ 

चाल करना चाहिए!

वैकल्पिक रूप से, अगर आप सभी अक्षरांकीय प्लस एक अंडरस्कोर शामिल करना चाहते हैं आप का उपयोग कर सकते हैं:

^[a-zA-Z][\w]*$ 
+0

व्हाइटस्पेस निश्चित रूप से '\ w' में शामिल नहीं है। .net में यह है '[\ p {एल} \ p {एन} _]' यह सब यूनिकोड अक्षर, संख्या और (कम से कम) अंडरस्कोर भी शामिल है। – stema

+0

@stema क्षमा टाइपो, मेरे सिर कहा अंडरस्कोर, लेकिन अपनी उंगलियों को खाली स्थान के द्वारा लिखा गया। अच्छा स्थान, धन्यवाद। –

11

शायद ज़रुरत पड़े कि ASCII वर्ण कुछ बिंदु पर पर्याप्त नहीं है, यहाँ यूनिकोड संस्करण हैं:

^\p{L}[\p{L}\p{N}]*$ 

\p{L} कि संपत्ति पत्र ==> किसी भी भाषा से कोई पत्र (कि यूनिकोड में है)

है किसी भी यूनिकोड कोड बिंदु हैसंपत्ति नंबर है कि किसी भी यूनिकोड कोड बिंदु है ==> किसी भी भाषा से कोई भी संख्या चरित्र (कि यूनिकोड में है)

2

इस समारोह वापस आ जाएगी सच या रेगुलर एक्सप्रेशन मिलान किया जाता है, इस पर है या नहीं आधारित झूठी,

public static Boolean isAlphaNumeric(string strToCheck) 
    { 
     Regex rg = new Regex(@"^[a-zA-Z0-9\s,]*$"); 
     return rg.IsMatch(strToCheck); 
    } 
1

या थोड़ा स्वीकार किए जाते हैं जवाब की तुलना में कम वर्बोज़:

^[a-zA-Z][\w]*$ 

सी # regex चरित्र वर्ग सूचक "\ डब्ल्यू" अल्फ़ान्यूमेरिक वर्णों के लिए, लेकिन सिर्फ वर्णमाला (कोई अंक) के लिए एक चरित्र वर्ग नहीं है है, इसलिए आपको कक्षा निर्दिष्ट करनी है मैन्युअल रूप से [ए-जेए-जेड] सेट करें।

+1

जैसा कि पहले बताया गया है, [\ w] अंडरस्कोर वर्ण शामिल है जिसे मूल पोस्ट में नहीं पूछा गया है और स्वीकृत उत्तर के बराबर नहीं है। https://msdn.microsoft.com/en-us/library/vstudio/20bw873z(v=vs.110).aspx#WordCharacter – fractor

0

यह, अक्षरांकीय जाँच करने के लिए सबसे अच्छा समाधान है

  • अगर यह केवल स्ट्रिंग है - "त्रुटि"। "त्रुटि" -
  • अगर यह केवल पूर्णांक है।
  • अगर यह अक्षरांकीय है - "सफलता"।

    if (System.Text.RegularExpressions.Regex.IsMatch(txt.Text, @"[a-zA-Z]") && 
        System.Text.RegularExpressions.Regex.IsMatch(txt.Text, @"[0-9]")  
    { 
        // Success - It is alphanumric 
    } 
    else 
    { 
        // Error - It is not alphanumric 
    } 
    
संबंधित मुद्दे