Vorgehensweise: Entfernen ungültiger Zeichen aus einer Zeichenfolge

Im folgenden Beispiel wird die statische Regex.Replace Methode verwendet, um ungültige Zeichen aus einer Zeichenfolge zu entfernen.

Warning

Die uneingeschränkte Verwendung von System.Text.RegularExpressions mit nicht vertrauenswürdigen Eingaben kann Anwendungen Denial-of-Service-Angriffen aussetzen. Lesen Sie bewährte Methoden für reguläre Ausdrücke in .NET, um Anleitungen zur sicheren Verwendung von .NET regulären Ausdrücken mit nicht vertrauenswürdigen Eingaben zu erhalten.

Example

Sie können die CleanInput in diesem Beispiel definierte Methode verwenden, um potenziell schädliche Zeichen zu entfernen, die in ein Textfeld eingegeben wurden, das Benutzereingaben akzeptiert. In diesem Fall entfernt CleanInput alle nicht alphanumerischen Zeichen mit Ausnahme von Punkten (.), At-Zeichen (@) und Bindestrichen (-) und gibt die verbleibende Zeichenfolge zurück. Sie können das Muster für reguläre Ausdrücke jedoch so ändern, dass alle Zeichen entfernt werden, die nicht in einer Eingabezeichenfolge enthalten sein sollten.

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

Das Muster [^\w\.@-] für reguläre Ausdrücke entspricht jedem Zeichen, das kein Wortzeichen, ein Punkt, ein @-Symbol oder ein Bindestrich ist. Ein Wortzeichen ist ein beliebiger Buchstabe, eine Dezimalziffer oder ein verbindendes Satzzeichen wie ein Unterstrich. Jedes Zeichen, das diesem Muster entspricht, wird durch String.Emptydie durch das Ersetzungsmuster definierte Zeichenfolge ersetzt. Um zusätzliche Zeichen in der Benutzereingabe zuzulassen, fügen Sie diese Zeichen der Zeichenklasse im Muster für reguläre Ausdrücke hinzu. Das Muster [^\w\.@-\\%] für reguläre Ausdrücke ermöglicht z. B. auch ein Prozentsymbol und einen umgekehrten Schrägstrich in einer Eingabezeichenfolge.

Siehe auch