2011-10-11 10 views
5

Próbuję utworzyć zwykłe wyrażenie, aby zatrzymać użytkownika wprowadzającego znak specjalny w dowolnym miejscu w ciągu znaków, ale dodając liczby i podkreślenia wewnątrz łańcucha, z wyjątkiem punktu początkowego.Wyrażenie regularne, aby zatrzymać znaki specjalne oprócz _ pomiędzy nie na początku

scenariusze

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

podkreślenia powinno być dozwolone tylko tylko pomiędzy nie w początek i koniec

zaktualizowanego kodu

im nazywając ten kod na textchange przypadku mojego tekstowym

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

ten kod wyświetla błąd

+0

IM język przy użyciu C# – Abhi

Odpowiedz

1

Zakładając, że chcą tylko, aby umożliwić ASCII litery, cyfry i podkreślenia, użyj

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

w Javie lub

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

w .NET.

Objaśnienie:

^    # 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 

Zobacz go w akcji: Screenshot from RegexBuddy

+0

ya im przy użyciu C# więc pozwól mi spróbować – Abhi

+0

@ Tim exp jest workign porządku teraz excep przypadek podkreślenia, chcę pozwolić na podkreślenia między – Abhi

+0

Pokaż mi przypadek testowy, w którym to nie działa, proszę. –

Powiązane problemy