Form Kontrolü için Düzenli İfadeler

Hangi web programlama dilini kullanırsanız kullanın, Form doğrulama oldukça önemli bir konudur. Bu nedenle bu makaleyi Web Tasarım kategorisine aldım.  Google uzmanlarının önerdiği teknikleri bu makalemde sizinle paylaşacağım. İster ASP.net, ister PHP, ister Java-JSP uzmanı olun bu bilgiler işinize yarayacaktır.

Kullanıcıdan gelen bilgilere hiç bir zaman güvenemeyiz, kullanıcıdan gelen bilginin kontrol edilmemesi SQL Injection, XSS Saldırısı gibi saldırılara yol açabilir. Bu nedenle verinin temizlenmesi, filtrelenmesi, uygun veri tipine çevrilmesi önemlidir. 

Örneğin e-mail adreslerinde mutlaka @ işareti olmalıdır, @ den sonra mutlaka bir nokta yer almalıdır ve noktadan sonra en az iki karakter olmalıdır, oguzhantas@email.com, otas@boun.edu.tr gibi.  E-mail dışında telefon numarası, Kredi Kartı Numarası gibi bilgilerin de bir formatı olursa kullanıcı  doğru bilgi girmeye zorlanacaktır. 

Tanım

Düzenli İfadeler (Regular expression)

Posta Adresi

[a-zA-Z\d\s\-\,\#\.\+]+

Posta Kodu (Amerika)

^\d{5,6}(?:[-\s]\d{4})?$

IP Adresi (IPv4)

^(?:(?: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]?)$

IP Adresi (IPv6)

^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$

IP Adresi (hem V4, hem V6 için)

^(?:(?: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]?)|(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$

Kredi Kartı Numarası

^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|6(?:011|5[0-9]{2})[0-9]{12}|(?:2131|1800|35\d{3})\d{11})$

Sosyal Güvenlik Numarası

^\d{3}-\d{2}-\d{4}$

Kuzey Amerika Telefon Numarası

^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$


Aşağıdaki linkte bu bilgileri ve kullanım alanlarını bulacaksınız.
https://developers.google.com/web/fundamentals/input/form/provide-real-time-validation?hl=en

Aşağıdaki linkte form doğrula için 50 tane teknik göreceksiniz.
http://www.jqueryrain.com/demo/jquery-validation-plugin/

Özellikle aşağıdaki jquery kütüphanesi birçok web sitesinden aşina olduğumuz kütüphanedir, kullanım örneklerine bakabilirsiniz, kütüphanenin Türkçe desteği de bulunmaktadır.
http://www.jqueryrain.com/2012/04/jquery-validation-engine-with-demo/

Aşağıda ekran görüntüsünde görüldüğü gibi uyarı mesajları çıkaracağız.


Bu yazının sonraki versiyonda Jquery ile Form Doğrulama (Jquery Form Validation) için ayrı bir kütüphane kullanacağız.

İyi günler diliyorum,
Oğuzhan TAŞ




Bookmark and Share