Como: Remover caracteres inválidos de uma cadeia de caracteres

O exemplo a seguir usa o método static Regex.Replace para remover caracteres inválidos de uma cadeia de caracteres.

Aviso

Ao usar System.Text.RegularExpressions para processar entradas não confiáveis, passe um tempo limite. Um usuário mal-intencionado pode fornecer entrada para RegularExpressionso , causando um ataque de Negação de Serviço. ASP.NET APIs da estrutura principal que usam RegularExpressions passar um tempo limite.

Exemplo

Você pode usar o CleanInput método definido neste exemplo para remover caracteres potencialmente prejudiciais que foram inseridos em um campo de texto que aceita a entrada do usuário. Nesse caso, remove todos os caracteres não alfanuméricos, CleanInput exceto pontos (.), nos símbolos (@) e hífenes (-), e retorna a cadeia de caracteres restante. No entanto, você pode modificar o padrão de expressão regular para que ele remova todos os caracteres que não devem ser incluídos em uma cadeia de caracteres de entrada.

using System;
using System.Text.RegularExpressions;

public class Example
{
    static string CleanInput(string strIn)
    {
        // Replace invalid characters with empty strings.
        try {
           return Regex.Replace(strIn, @"[^\w\.@-]", "",
                                RegexOptions.None, TimeSpan.FromSeconds(1.5));
        }
        // If we timeout when replacing invalid characters,
        // we should return Empty.
        catch (RegexMatchTimeoutException) {
           return String.Empty;
        }
    }
}
Imports System.Text.RegularExpressions

Module Example
    Function CleanInput(strIn As String) As String
        ' Replace invalid characters with empty strings.
        Try
            Return Regex.Replace(strIn, "[^\w\.@-]", "")
            ' If we timeout when replacing invalid characters, 
            ' we should return String.Empty.
        Catch e As RegexMatchTimeoutException
            Return String.Empty
        End Try
    End Function
End Module

O padrão [^\w\.@-] de expressão regular corresponde a qualquer caractere que não seja um caractere de palavra, um ponto, um símbolo @ ou um hífen. Um caractere de palavra é qualquer letra, dígito decimal ou conector de pontuação, como um sublinhado. Qualquer caractere que corresponda a esse padrão é substituído por String.Empty, que é a cadeia de caracteres definida pelo padrão de substituição. Para permitir caracteres adicionais na entrada do usuário, adicione esses caracteres à classe de caracteres no padrão de expressão regular. Por exemplo, o padrão [^\w\.@-\\%] de expressão regular também permite um símbolo de porcentagem e uma barra invertida em uma cadeia de caracteres de entrada.

Consulte também