Share via


Gör så här: Ta bort ogiltiga tecken från en sträng

I följande exempel används den statiska Regex.Replace metoden för att ta bort ogiltiga tecken från en sträng.

Varning

När du använder System.Text.RegularExpressions för att bearbeta ej betrodda indata skickar du en timeout. En obehörig användare kan ange indata till RegularExpressions, vilket orsakar en Denial-of-Service-attack. ASP.NET Core Framework-API:er som använder RegularExpressions passera en timeout.

Exempel

Du kan använda den CleanInput metod som definieras i det här exemplet för att ta bort potentiellt skadliga tecken som har angetts i ett textfält som accepterar användarindata. I det här fallet CleanInput tar bort alla icke-alfanumeriska tecken utom punkter (.), vid symboler (@) och bindestreck (-) och returnerar den återstående strängen. Du kan dock ändra mönstret för reguljära uttryck så att det tar bort alla tecken som inte ska ingå i en indatasträng.

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

Det reguljära uttrycksmönstret [^\w\.@-] matchar alla tecken som inte är ett ordtecken, en punkt, en @-symbol eller ett bindestreck. Ett ordtecken är valfri bokstav, decimalsiffra eller skiljetecken, till exempel ett understreck. Alla tecken som matchar det här mönstret ersätts av String.Empty, vilket är strängen som definieras av ersättningsmönstret. Om du vill tillåta ytterligare tecken i användarindata lägger du till dessa tecken i teckenklassen i mönster för reguljära uttryck. Till exempel tillåter mönster [^\w\.@-\\%] för reguljära uttryck även en procentsymbol och ett omvänt snedstreck i en indatasträng.

Se även