Nasıl yapılır: Dizeden Geçersiz Karakterleri Çıkartma

Aşağıdaki örnek, bir dizeden geçersiz karakterleri almak için statik Regex.Replace yöntemi kullanır.

Uyarı

Güvenilmeyen girişi işlemek için kullanırken System.Text.RegularExpressions bir zaman aşımı geçirin. Kötü amaçlı bir kullanıcı için giriş RegularExpressionssağlayabilir ve bu da Hizmet Reddi saldırısına neden olabilir. ASP.NET Zaman aşımı kullanan RegularExpressions Core framework API'leri.

Örnek

Bu örnekte tanımlanan yöntemini kullanarak CleanInput , kullanıcı girişini kabul eden bir metin alanına girilmiş zararlı olabilecek karakterlerin soyulabilmesini sağlayabilirsiniz. Bu durumda, CleanInput nokta (.), simgeler (@) ve kısa çizgi (-) dışında tüm nonalphanumeric karakterleri çıkarır ve kalan dizeyi döndürür. Ancak, normal ifade desenini değiştirerek bir giriş dizesine dahil edilmemesi gereken karakterlerin çıkarılabilmesini sağlayabilirsiniz.

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

Normal ifade düzeni [^\w\.@-] , sözcük karakteri, nokta, @ simgesi veya kısa çizgi olmayan herhangi bir karakterle eşleşir. Sözcük karakteri herhangi bir harf, ondalık basamak veya alt çizgi gibi noktalama işaretleri bağlayıcısıdır. Bu desenle eşleşen herhangi bir karakter, değiştirme deseni tarafından tanımlanan dize olan ile değiştirilir String.Empty. Kullanıcı girişinde ek karakterlere izin vermek için bu karakterleri normal ifade desenindeki karakter sınıfına ekleyin. Örneğin, normal ifade deseni [^\w\.@-\\%] bir giriş dizesinde yüzde simgesine ve ters eğik çizgiye de izin verir.

Ayrıca bkz.