Sdílet prostřednictvím


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.

Viz také