Cómo: Quitar caracteres no válidos de una cadena

En el ejemplo siguiente se usa el método estático Regex.Replace para quitar caracteres no válidos de una cadena.

Advertencia

El uso sin restricciones de System.Text.RegularExpressions con entradas no fiables puede exponer a las aplicaciones a ataques de denegación de servicio. Consulte Procedimientos recomendados para expresiones regulares en .NET para obtener instrucciones sobre cómo usar de forma segura .NET expresiones regulares con entradas que no son de confianza.

Example

Puede usar el CleanInput método definido en este ejemplo para quitar caracteres potencialmente dañinos que se han escrito en un campo de texto que acepta la entrada del usuario. En este caso, CleanInput elimina todos los caracteres no alfanuméricos excepto puntos (.), símbolos de arroba (@) y guiones (-), y devuelve la cadena restante. Sin embargo, puede modificar el patrón de expresión regular para que quite los caracteres que no se deben incluir en una cadena 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

El patrón de expresión regular [^\w\.@-] coincide con cualquier carácter que no sea un carácter de palabra, un punto, un símbolo @ o un guion. Un carácter de palabra es cualquier letra, dígito decimal o conector de puntuación, como un carácter de subrayado. Cualquier carácter que coincida con este patrón se reemplaza por String.Empty, que es la cadena definida por el patrón de reemplazo. Para permitir caracteres adicionales en la entrada del usuario, agregue esos caracteres a la clase de caracteres en el patrón de expresión regular. Por ejemplo, el patrón [^\w\.@-\\%] de expresión regular también permite un símbolo de porcentaje y una barra diagonal inversa en una cadena de entrada.

Consulte también