C# ile Regex Kullanıcı Adı ve Şifre Kontrolü

  • 1646
  • (2)
  • (5)
  • 22 May 2021

Regex Nedir?

Regex ifadesi Regular Expression yani Düzenli İfadeler anlamına gelmektedir. Bir string değeri belli bir kalıp içerisinde tutmaya ya da değerlendirmeye yarar. Örneğin o değerin sadece sayılardan oluşmasını isteyebilirsiniz. Ya da sayı ve harflerden oluşup özel karak içermemesini de isteyebilirsiniz. Bu gibi durumlar için Regex kullanımı oldukça yaygındır.

Google regex test aratması ile string değerlerin regex uyumluluğunu test edebileceğiniz çeşitli websiteleri bulabilirsiniz. Çünkü regex değerlerinin salt halleri bazen anlaşılması zor ve karmaşıktır.

C#' da Regex Kullanımı

C# dilinde Regex sınıfının kullanılabilmesi için kodunuza System.Text.RegularExpressions kütüphanesini eklemelisiniz.

using System.Text.RegularExpressions;

Regex sınıfı tanımlanırken bir pattern parametresi ile tanımlanmaktadır. Bu parametre Regex öğesinin string değerleri hangi kriterlere göre denetleyeceğini karmaşık bir yapıda ifade etmektedir.

Örneğin ^(?=[a-zA-Z])[-\w.]{5,16}([a-zA-Z\d]|(?<![-.])_)$ regex değeri, uzunluğu 5 ve 16 karakter arası olan, büyük ve küçük karakter içeren bir string değeri ifade eder. Eğer uzunluk 4 karakter veya 20 karakter olursa uyumsuzluk olacaktır. Sayı içerebilir ancak sayı ile başlayamaz. Aslında bu Regex bir kullanıcı adı için idealdir.

Aşağıdaki örnekte daha iyi anlaşılabilir.


public bool IsAccountNameValid(string account_name)
{
    Regex regex = new Regex(@"^(?=[a-zA-Z])[-\w.]{5,16}([a-zA-Z\d]|(?<![-.])_)$");
    return regex.IsMatch(account_name);
}

// Eğer account_name değeri regex ile uyumlu olursa true, olmazsa false değeri dönecektir.
// Mesela 12yusuf false, yusuf12 true değeri döndürür.
// ali değeri false döndürür, çünkü 5 karakterden kısadır.

Şifreler için ideal bir regex arıyorsanız ^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@!%*?+#&'()[=\"€])[A-Za-z\\d$@!%*?+#&'()[=\"€']{8,} son derece idealdir. İçerisinde bir küçük, bir büyük karakter ve bir sayı olmak zorundadır. Uzunluğu 8 karakterden büyük olmalıdır. Aksi halde eşleştirilen string değeri uyumsuz olacaktır.


public bool IsPasswordValid(string password)
{
    Regex regex = new Regex("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@!%*?+#&'()[=\"€])[A-Za-z\\d$@!%*?+#&'()[=\"€']{8,}");
    return regex.IsMatch(password);
}

// Eğer password değeri regex ile uyumlu olursa true, olmazsa false değeri dönecektir.
// Mesela sifre1234 false, Sifre123! true değeri döndürür.

Eğer bu işlemi Regex ile değil de koşullar ile yapmak isteseydiniz, çok sayıda if ve else if koşulu yazmanız gerekirdi.

İlişkili İçerikler

C# ile metin değerleri (string) üzerinde yapılabilecek çeşitli işlemleri inceleyebileceğiniz bu yazı metin tabanlı uygulamalar geliştirmek için son derece faydalı olacaktır.

WPF içerisinde özelleştirilmiş UIElement nesneleri kullanmak için WPF Toolkit Extended kütüphanesini kullanabilirsiniz. Ancak bu içerikte bu kütüphaneye gerek duymadan Textbox nesnesine sadece sayı değeri girişinin nasıl yapıldığına değiniliyor.

Paylaşın
Etiket Bulutu