Belirli bir dize içerisinde 255.255.255.255 gösteriminin olduğunu varsayacağımız IPv4 adresinin olup olmadığını kontrol etmek istiyorsak işimize yarayacak bir konu. Bu basit bir projede karşıma çıkmış ancak hiç tecrübem olmadığı için araştırmak zorunda kaldığım bir konuydu. Basit anlamda bir txt içeriğini okumak ve belirli ifadeleri içerisinden almak yeni bir dosyaya eklemeler yaparak yazdırmaktı. Elbette ip almak istediğimde iş Regex IPv4 Adresleri , Regex ile IP Alma araştırmasına döndü. Edindiğim bilgileri paylaşayım hemen.
İçerik Haritası
Düzenli İfadelerin Kullanım Amacı (Regex)
- Veri yığınından kurtulur , ihtiyaç duyduğunuz bilgiyi kolaylıkla bulabilirsiniz,
- Kullanıcı girdilerini kontrol etme (mail,site adı gibi)
- Verilerin kullanım amacına uygun olarak işlenmesi
Bir IP adresini kontrol etmek için basit regex ifadesi
Not: Tanımlama yaparken desenin başı ve sonuna “/” koymayı unutmayınız. Demek istediğim ;
$pattern = "/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/";
tanımlamayı böyle yapmazsanız limit hatası verecektir. Devamına geçebilirsiniz.
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
benim kullandığım desen buydu ancak pek çok yerde
^ (?: [0-9] {1,3} \.) {3} [0-9] {1,3} $
olarak kullanıldığını da gördüm.
Normal ifade çeşitleri : .NET, Java, JavaScript, PCRE, Perl, Python, Ruby
Kapsamlı bir IP adresi almak için ise ;
^ (? :( ?: 25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) \.) {3} ↵ (?: 25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) $
kullanılabilir.
Regex ile IP adresinin dört bölümünü alma
^ ([0-9] {1,3}) \. ([0-9] {1,3}) \. ([0-9] {1,3}) \. ([0-9] { 1,3}) $
Regex ile ip adresinin dört bölümünü de alma (Kapsamlı)
^ (25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) \. ↵ (25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) \. ↵ (25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) \. ↵ (25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) $
Regex ile metin içerisinde kelime arama
$pattern= "/wordpress/"; $text = "wordpress dersleri ve makaleler"; if(preg_match($pattern,$text)) echo "wordpress kelimesini içeriyor."; else echo "ifade yok";
Regex ile Rakam Kontrolü Nasıl Yapılır ?
$pattern = "/[0-9]+/"; $text = "4 yılı aşkın süredir"; if(preg_match($pattern,$text)) echo "Metin içerisinde en az bir rakam bulunuyor."; else echo "Metin içerisinde rakam bulunmuyor.";
Regex ile Tarih Formatı Kontrolü
$pattern = '/[0-9]{2}\.[0-9]{2}\.[0-9]{4}/'; $text= "16.06.1998"; if(preg_match($pattern,$text)) echo "Tarih Formatı Doğru"; else echo "Tarih Formatı Geçersiz.";
Benden şimdilik bu kadar kalın sağlıcakla 🙂