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 RegularExpressions
een 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.