/ / में विशेष पात्रों को बंद करने के लिए नियमित अभिव्यक्ति _ के अलावा बीच में नहीं शुरू - सी #, .net, regex

प्रारंभिक अभिव्यक्ति को रोकने के लिए नियमित अभिव्यक्ति को रोकने के लिए _ को छोड़कर - सी #, .net, regex

मैं किसी भी स्थान पर विशेष चरित्र में प्रवेश करने वाले उपयोगकर्ता को रोकने के लिए एक नियमित एक्सपोजर बनाने की कोशिश कर रहा हूं, लेकिन वह स्टार्टिंग पॉइंट को छोड़कर स्ट्रिंग के अंदर संख्या और अंडरस्कोर को बदल रहा है।

परिदृश्यों

        abhi_3123123  valid
abhi___ASDFAS valid
3425_asdfasdf invalid
_asdfasdf     invalid
sometext(having any spcl character at any place) invalid

केवल अंडरस्कोर की शुरुआत और अंत में नहीं के बीच में ही अनुमति दी जानी चाहिए

अद्यतन कोड

मैं अपने textbox के textchange घटना पर इस कोड को बुला रहा हूँ

 string regEx = @"^[a-zA-Z][a-zA-Z0-9_]*(?<!_)$";
if (System.Text.RegularExpressions.Regex.IsMatch(txtFunctionName.Text, regEx))
{
//no error
}
else
{
// show error
}

यह कोड त्रुटि दिखा रहा है

उत्तर:

उत्तर № 1 के लिए 1

मान लें कि आप केवल ASCII अक्षर, अंक और अंडरस्कोर की अनुमति देना चाहते हैं, उपयोग करें

^[a-zA-Z]w*(?<!_)$

जावा में या

^[a-zA-Z][a-zA-Z0-9_]*(?<!_)$

कुल मिलाकर।

स्पष्टीकरण:

^               # Start of string
[a-zA-Z]        # First character: ASCII letter
[a-zA-Z0-9_]*   # Following characters: ASCII letter, digit or underscore
(?<!_)          # Assert that last character isn"t an underscore
$               # End of string

इसे क्रिया में देखें: RegexBuddy से स्क्रीनशॉट