Bir önceki makalemizde, Regular Expressions hakkında genel bilgiler verip, asp.net , mvc içinde nasıl kullanılacağına ait örnekler paylaşmıştık. Bu makalemizde ise regular expression ifadeleri inceleyip, kullanılan özel karakterler ve sık kullanılan bazı patternlere yer vereceğiz.

Bir önceki makaleye ulaşmak için tıklayınız.

Meta Karakterler (Escaped Characters)

Örnek olarak : “k.r” ifadesi :”kar” , “kor”, “kör” ,”kür” , “ker”, “krr”, “k2r”… vs. olarak eşleşebilir.

Örnek olarak : “k*r ifadesi :”r” , “kr” , “kkr” , “kkkr”… vs. olarak eşleşebilir.

Örnek olarak : “k+r ifadesi :”kr” , “kkr” , “kkkkr”… vs. olarak eşleşebilir.

Örnek olarak : “k*r” ifadesi :”r” , “kr” olarak eşleşebilir.

Örnek olarak : “kar$” ifadesi, “sakar” kelimesi ile eşleşir ama “sakarya” kelimesi ile eşleşmez.

Örnek olarak : “^kar” ifadesi, “kartal” kelimesi ile eşleşir ama “sakar” kelimesi ile eşleşmez.

Örnek olarak : “neden\?” ifadesi :”neden?” olarak eşleşebilir. En sık kullanım şekilleri :”\\” , “\?” ,”\d”, “\s”, “\n”.

Örnek olarak : “k[aoö]r” ifadesi : “kar” , “kor” ve “kör” olarak eşleşeşir.

Örnek olarak : “[a-z]” ifadesi , tüm küçük harfleri, [A-Za-z] ifadesi tüm büyük ve küçük harfleri, [0-9] ise tüm rakamları temsil eder .

Örnek olarak : “[ ^a-z]” ifadesi , küçük hafrler dışındaki tüm karakter için eşleşme sağlar .

Örnek olarak : “[0-9]{3}” ifadesi , tüm rakamlardan, istenilen 3 tanesinin girilmesi zorunlu tutar .

Örnek olarak : “[0-9]{3,5}” ifadesi , tüm rakamlardan, istenilen 3 ,4 veya 5 tanesinin girilmesi ister.

Örnek olarak : “sa(ka)?r” ifadesi “sa” veya “sakar” ifadeleri ile eşleşir.

Örnek olarak : “sak(ar)|(ın)” ifadesi “sakar” veya “sakın” ifadeleri ile eşleşir.

Bu özel karakterler ve formüller kullanılarak regular expression kalıpları oluşturulur. Örnek olarak sadece yıl yazılmasını istediğimiz bir değişkenimiz olsun.

– Bunun için ilk aklımıza gelen, 4 basamaklı bir sayı girilmesi zorunluğu için “[0-9]{4}” ifadesi, başına ve sonuna başka bir şey yazılmaması için “^” ve “$” karakterlerini kullanıyoruz. Bu şekilde ifademiz :

string strRegex =@”(^[0-9]{4})$”;

-Fakat burada ilk basamağa 0 girilebilir. Bunu düzeltmek ve yılların 17, 18, 19 veya 20 ile başladığını belirtmek, sonrasında ise sadece 2 basamak girilmesi için ifademizin yeni hali:

string strRegex =@”^(17|18|19|20)+([0-9]{2}) $”;

– Burada “[0-9]{2}” ifadesi yerine, “\d” ifadesi de kullanılabilir:

string strRegex =@”^(17|18|19|20)+\d {2}$”;

Bunun gibi pek çok pattern, istenilen doğrultuda oluşturulabilir.

Sık Kullanılan Regular Expression Kalıpları

Yukarıda tanımlanan karakterler kullanılarak, işimize yarayacak pek çok kalıp oluşturabiliriz. Fakat hali hazırda kullanılan ve sık ihtiyaç duyulan kalıpları sizin için derledik.

Sadece Rakam Kalıbı

string strRegex =(@”^[ 0-9 ]*$”); ya da string strRegex =(@”^\d*$”);

Sadece Harf Kalıbı

[a-z] : sadece küçük harfler.

[A-Z] : sadece büyük harfler.

[a-zA-Z] : hem küçük hem büyük harfler.

string strRegex =(@”^[a-zA-Z]*$”); Sadece harf girişi.

Telefon Numarası Kalıbı

xxxxxxxxxx : string strRegex =(@”^[0-9]{10}$”);

+xx xxxxxxxxxx : string strRegex =(@”^+[0-9]{2}\s +[0-9]{10}$”);

0xxx-xxx-xx-xx : string strRegex =(@”^(0(\d{3})-(\d{3})-(\d{2})-(\d{2}))}$”);

Tarih Kalıbı

Gün için : “((0[1-9])|([12][0-9])|(3[01]))”

Ay için : “((0[1-9])|(1[0-2]))”

Yıl İçin : “((17|18|19|20)+\d{2})”

dd/MM/yyyy kalıbı için : string strRegex =(@”^ ((0[1-9])|([12][0-9])|(3[01]))(/)((0[1-9])|(1[0-2]))(/)((17|18|19|20)+\d{2})$”);

Saat Kalıbı

HH:mm şeklinde 24 saat için : string strRegex =(@”^ ([0-1][0-9]|2[0-3]):([0-5][0-9]) $”);

hh:mm şeklinde 12 saat için : string strRegex =(@”^ ([0][0-9]|1[0-1]):([0-5][0-9]) $”);

Ondalık Sayı Kalıbı (virgülden sonra iki basamak için)

string strRegex =(@”^[0-9]+(.[0-9][0-9]?)?$”); ya da string strRegex =(@”^\d+(.\d{1,2})?$”);

E-mail Kalıbı

string strRegex =(@”^(?(“”)(“”.+?(?<!\)””@)|((0-9a-zA-Z|[-!#\$%&’*+/=\?\^`{}|~\w]))(?<=[0-9a-zA-Z])@))(?([)([(\d{1,3}.){3}\d{1,3}])|(([0-9a-zA-Z][-\w][0-9a-zA-Z]*.)+[a-z0-9][-a-z0-9]{0,22}[a-zA-Z0-9]))$”);

One Response

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.