ASP.NET C# için Regex (Regular Expressions) Notları-2

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)

  • “@” : Regex formatları içerisinde C#’a özel karakterler içerebileceğinden, her bir ifadenin başına bu karakter eklenir.
  • “()” : istenilen ifade parantez içine alınarak yazılır.
  • “.” : Herhangi bir tek karakter eşleştirme için bu ifade kullanılır.

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

  • “*” : Kendinden önceki karakterin 0 veya daha fazla tekrarı ile eşleşir.

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

  • “+”       : Kendinden önceki karakterin bir veya daha fazla tekrarı ile eşleşir.

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

  • “?” : Kendinden önceki karakterin 0 en fazla 1 tekrarı ile eşleşir.

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

  • “$” : Satır sonunu belirtmek için kullanılır. Belirlelen patternin sonuna eklenir. böylelikle pattern ile uyuşan ifadelerin satır sonu olması zorunluluğu getirlmiş olur.

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

  • “^” : Satır başını belirtmek için kullanılır. Belirlelen patternin başına eklenir. böylelikle pattern ile uyuşan ifadelerin satır başı olması zorunluluğu getirlmiş olur.

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

  • “\” : Kendinden sonraki özel karakterin stringe dahil edilmesini sağlar.

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

  • “\s” : Boşluk karakteri olarak kullanılır.

  • “\S” : Boşluk karakteri olmaması için kullanılır.

  • “\d” : Herhangi bir rakam için kullanılır.

  • “\D” : Rakam olmaması için kullanılır.

  • “[]” : Kullanılabilecek karakterlerin dizisini temsil eder. Belirlenen patternde, sadece içine yazılan karakterlerle eşleşme sağlar.

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

  • “[a1-a2]” : Kullanılabilecek karakterlerin dizisi için aralık belirtir.

Ö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 .

  • “[ ^a1-a2]” : Belirlenen karakter dizisinin haricindeki tüm karakterlerin kullanılabileceğini ifade eder.

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

  • “{n1}” : Belirlenen karakterin veya ifadenin kaç tane kullanılacağı belirlemek için kullanılır.

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

  • “{n1,n2}” : Belirlenen karakterin veya ifadenin en az ve en çok kaç tane kullanılacağı belirlemek için kullanılır .

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

  • “()” : Yazılan ifadeleri gruplandırmak için kullanılır.

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

  • “|” : “Veya” anlamında , genellikle ifade gruplarının “()” arasında kullanılır.

Ö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 thought on “ASP.NET C# için Regex (Regular Expressions) Notları-2

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir