Postupy: Odstranění neplatných znaků z řetězce
Následující příklad používá statickou Regex.Replace metodu k odstranění neplatných znaků z řetězce.
Upozorňující
Při zpracování System.Text.RegularExpressions nedůvěryhodného vstupu předejte vypršení časového limitu. Uživatel se zlými úmysly může poskytnout vstup RegularExpressions
, což způsobí útok na dostupnost služby. ASP.NET rozhraní API architektury Core, která používají RegularExpressions
vypršení časového limitu.
Příklad
Metodu definovanou v tomto příkladu CleanInput
můžete použít k odstranění potenciálně škodlivých znaků zadaných do textového pole, které přijímá uživatelský vstup. V tomto případě CleanInput
odstraní všechny neosamocené znaky s výjimkou tečk (.), u symbolů (@) a spojovníků (-) a vrátí zbývající řetězec. Vzor regulárního výrazu však můžete upravit tak, aby se odstraňily všechny znaky, které by neměly být zahrnuty do vstupního řetězce.
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
Vzor regulárního výrazu [^\w\.@-]
odpovídá jakémukoli znaku, který není znakem slova, tečkou, symbolem @ nebo spojovníkem. Znak slova je libovolné písmeno, desetinná číslice nebo spojnice interpunkce, jako je podtržítko. Libovolný znak, který odpovídá tomuto vzoru, se nahradí řetězcem String.Emptydefinovaným vzorem nahrazení. Pokud chcete povolit další znaky ve vstupu uživatele, přidejte tyto znaky do třídy znaků ve vzoru regulárního výrazu. Například vzor [^\w\.@-\\%]
regulárního výrazu také umožňuje procentuální symbol a zpětné lomítko ve vstupním řetězci.