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.