9/12/2005

.Net ile Regular Expression Kullanimi

Regular Expression Nedir?
Regular expression kullanımı .Net aplikasyonlarınızda istediğiniz belirli text fieldlere(kutucuklara) kullanıcılarınızın girebileceği değerleri istenilen şekilde limitleyebilmenizi sağlar.

Örneğin posta kodu 5 haneli numerik bir değer olacak. Yada telefon numarası 0-XXX-XXXXXXX şeklinde olacak şeklinde istediğiniz hemen hemen her türlü regular expression'u .Net aplikasyonlarınıza entegre ederek kullanıcılarınızdan temiz ve istediğiniz şekilde veriler gelmesini sağlayabilirsiniz.

Basit bir örnek olarak son kullanıcı tarafından girilecek posta kodunun numerik bir değer olup olmadığının kontrol etmek için VB.Net ve C# ile bir regular expression yazalım.

VB.Net
Imports System.Text.RegularExpressions
Dim sRegExModeli As String = "^\d+$"
Dim sKontrolEdilecekText As String = txtPostaKodu.Text
If Not RegEx.IsMatch(sKontrolEdilecekText, sRegExModeli) Then
epValidation.SetError(ctrl, "Posta kodu icin lutfen numerik bir deger giriniz.")
End If


C#
using System.Text.RegularExpressions;
string sRegExModeli = @"^\d+$";
string sKontrolEdilecekText = txtPostaKodu.Text
If (!Regex.IsMatch(sKontrolEdilecekText, sRegExModeli))
{
epValidation.SetError(ctrl, "Posta kodu icin lutfen bir deger giriniz.")
}

Yazdığımız Regular Expression'u inceleyelim;
^ işareti model kıyaslama işleminin son kullanıcının gireceği ilk karakter ile başlayacağını bildirir.
\d Bir numerik değerler beklendigini bildirir(0-9)
+ işareti bir önce girilen değerin bir veya birden fazla kez bulunabileceğini belirtir. (örneğimize göre birden fazla kez girilecek numerik bir değer bekliyoruz)
$ işareti model kıyaslama işleminin son kullanıcının gireceği son karakter ile son bulacağını bildirir.

.Net Framework ile gelen Regular Expressions class'ındaki IsMatch methodu eğer belirttiğiniz text ile model birbirine uyuyor ise True değeri geri verecektir. Aksi takdirde False return eder.

Not: C# kodumuzdaki RegExModelini declare ederken kullandığımız @ işareti C#'ın escape karakterleri işlemeye çalışmasını önlemek içindi.

Bu makale Regular Expression kullanımına giriş niteliğinde bilgiler içermekteydi. İleriki bir makalede biraz daha komplike bir regular expression yazarak farklı kontrol nitelikleri ekleyeceğiz...