/ / Expressão regular para parar caracteres especiais, exceto _ entre não no início - c #, .net, regex

Expressão regular para parar caracteres especiais, exceto _ entre não no início - c #, .net, regex

Eu estou tentando criar um exp regular para parar o usuário inserir caracteres especiais em qualquer lugar na cadeia de caracteres, mas números e sublinhados dentro da seqüência de caracteres, exceto no ponto de partida.

cenários

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

apenas sublinhado deve ser permitido apenas entre não no início e no final

código atualizado

Eu estou chamando este código no evento textchange da minha caixa 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 está mostrando erro

Respostas:

1 para resposta № 1

Supondo que você queira apenas permitir letras ASCII, dígitos e sublinhados, use

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

em Java ou

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

na rede.

Explicação:

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

Veja em ação: Screenshot do RegexBuddy