Delen via


Procedure: Ongeldige tekens uit een tekenreeks stripen

In het volgende voorbeeld wordt de statische Regex.Replace methode gebruikt om ongeldige tekens uit een tekenreeks te verwijderen.

Waarschuwing

Wanneer u System.Text.RegularExpressions niet-vertrouwde invoer gebruikt, geeft u een time-out door. Een kwaadwillende gebruiker kan invoer opgeven voor RegularExpressionseen Denial-of-Service-aanval. ASP.NET Core Framework-API's die gebruikmaken van RegularExpressions een time-out.

Opmerking

U kunt de CleanInput in dit voorbeeld gedefinieerde methode gebruiken om mogelijk schadelijke tekens te verwijderen die zijn ingevoerd in een tekstveld dat gebruikersinvoer accepteert. In dit geval CleanInput worden alle niet-phanumerische tekens, behalve punten (.), bij symbolen (@) en afbreekstreepjes (-) weergegeven en wordt de resterende tekenreeks geretourneerd. U kunt echter het reguliere expressiepatroon wijzigen, zodat alle tekens die niet in een invoertekenreeks mogen worden opgenomen, worden weggenomen.

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

Het reguliere expressiepatroon [^\w\.@-] komt overeen met een teken dat geen woordteken, een punt, een @-symbool of een afbreekstreepje is. Een woordteken is een letter, decimaalteken of interpunctieconnector, zoals een onderstrepingsteken. Elk teken dat overeenkomt met dit patroon wordt vervangen door String.Empty. Dit is de tekenreeks die is gedefinieerd door het vervangende patroon. Als u extra tekens in gebruikersinvoer wilt toestaan, voegt u deze tekens toe aan de tekenklasse in het reguliere expressiepatroon. Met het patroon reguliere expressie [^\w\.@-\\%] kunt u bijvoorbeeld ook een percentagesymbool en een backslash in een invoertekenreeks gebruiken.

Zie ook