27-11-2013, 17:43 | #1 |
|
C# Asp.net Regular expression kullanımı
Asp.net de Regex işlemleri System.Text.RegularExpressions kütüphanesindeki
Regex,Match ve MatchCollection sınıflarını kullanarak yapılır. Regex bilindiği gibi nerdeyse tüm programlama dillerinde kullanılan bir bileşendir. Kuralları aynıdır fakat programlama dilinini türüne göre(prosedürel,nesneye yonelik vs) sözdizilim olarak farklılık gösterebilir. Ben asp.net ile regex kullanımını anlatacağım.Koda geçelim Kod:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text.RegularExpressions; // regex işlemlerini yapacağımız kütüphanenin namespace ini import ettik namespace Bilisimturk { public partial class Bilisimturk: System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Regex rgx = new Regex(@"^(www\.)?[a-zA-Z0-9-]{1,64}\.[a-zA-Z0-9-]{2,4}(\.[a-zA-Z]{2})?$"); /* Bir regex nesnesi oluşturduk.Regex classı constructor ın içine bir string alır ki bu string zorunludur. Bu string , seçmek veya doğrulamak istediğimiz bir kalıptır. Ben bu kalıpta bir domain için doğrulama kullanacağım. Kısaca patternden bahsedeceğim. baştaki ^ işareti o satırırn ve stringin mutlaka vereceğimiz kalıpla başlamasını sağlar (www\.)? burada ise () içindeki grubun 1 veya 0 kere olmasını istedik.? yerine + yapsak kalıp çalışmayacaktı Çünkü biz www. ifadesini isteğe bağlı olmasını istedik Eğer siz zorunlu kılmak istiyosanız ^www\. olarak yazabilirsiniz [a-zA-Z0-9-]{1,64} ifadesi ise buyuk-kucuk harf,rakam ve - işaretini alır {1,64} harf,rakam ve - den oluşan grubun minimum 1,maksimum 64 zorunlu kılar ben domain adı uzunlugunun max 64 olabilir diye biliyorum.Öyle değilse siz değiştirirsiniz \.[a-zA-Z0-9-]{2,4} bu ise domain den sonra gelen uzantıdır, com net org gibi Dikkat ettiyseniz 2 ile 4 arasında uzunluk verdim.Çünkü us,com,mobi gibi uzantılar mevcut (\.[a-zA-Z]{2})? Burada da enson olarak ulke uzantısını aldık. Sondaki soru işareti sayesinde bunun 0 yada 1 kere tekrarlanacağını yani isteğe bağlı oldugunu belirttik $ ile de patterni sonlardırdık */ string[] domains ={ "www.bilisimturk.org", "bilisimturk.org", ".org", "www.site-mite.mobi", "www.bilgiguvenligi.gov.tr", "7777-asdf-9.com.tx" }; // karşılaştırmak için string dizisi oluşturduk for(int k=0;k<domains.Length;k++) { Match bilisimturk = rgx.Match(domains[k]); // Regex in içindeki Match() fonksiyonu bir Match nesnesi döndürdü. if (bilisimturk.Success) // eğer eşleşme varsa { Response.Write("<div style='color:green'>["+ domains[k] +"] stringi domain adı için uygun </div>"); Response.Write(bilisimturk.Value); // değeri bastık } else { Response.Write("<div style='color:red'>[" + domains[k] + "] stringi domain adı için uygun değil</div>"); Response.Write(bilisimturk.ToString()); } } } } } Sonuç: Not:Subdomainleri çekmez.onuniçin ayr bir kalıp yazın Bir sonraki derste MatchCollection nasıl kullanılır onu anlatacağım Kaynak :C# Asp.net Regular expression kullanımı |
Alıntı |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
|
|