2011-10-11 16 views
5

Estoy tratando de crear una exp regular para detener al usuario que ingresa caracteres especiales en cualquier lugar en la cadena pero dejando números y guiones bajos dentro de la cadena excepto en el punto inicial.Expresión regular para detener caracteres especiales excepto _ no entre en el inicio

escenarios

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

solamente el subrayado se debe permitir solamente en el medio no en inicio y al final

código actualizado

im llamar a este código en TextChange caso de mi cuadro de texto

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

este código muestra el error

+0

la im idioma usando es C# – Abhi

Respuesta

1

Suponiendo que sólo desea permitir letras ASCII, dígitos y guiones, utilice

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

en Java o

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

en .NET.

Explicación:

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

verlo en acción: Screenshot from RegexBuddy

+0

ya Im usando C# así que voy a tratar de que – Abhi

+0

@ Tim exp es bien workign ahora excep el caso de subrayado, quiero permitir guiones bajos entre – Abhi

+0

Muéstrame un caso de prueba donde no está funcionando, por favor. –

Cuestiones relacionadas