Hatalı ve Yanlış girişleri engellemek ve Reguler Expressions

Müşteri ilişkilerini önemseyen bir firmada müşteri telefonları ve e posta adresleri büyük önem taşır.

Ve tablolarımızda kullandığımız ilgili alanların sadece zorunlu olması kullanıcılarımızı doğru bilgi girmesini sağlamaya yetmez.

Özellikle anlamsız bilgi girenler için ayrı bir paragraf açmalıyız çünkü bu konuda gerçekten yaratıcı bir millet olduğumuzu ifade etmeliyim. Bir müşterimizde CRM modülündeki telefon numaralarının ortalama olarak %30’u aynı numaralardan oluştuğuna şahit olmuştum. Muhtemelen e posta adresleri için de durum pek iç açıcı değildir. Ayrıca Türkiye’nin öne gelen kargo firmalarından birinde her kargo göndermemde TC kimlik numarası alanının varsayılan bir değer ile doldurulduğunu görüyorum. Bu tür girişler konumuzun biraz dışında, devam edelim…

Hatalı girişleri engellemek adına, daha kontrollü girişler sağlamak, daha doğru bilgi elde etmemizi sağlayabilir. Bu işlem için de Reguler Expressions ya da kısa adıyla Regex kullanmak çok faydalı olabilir. Regex, özetle bir alana girilecek olan olası bilgilerin formatını belirlemek için kullanılabilir. Buna terminolojide genellikle “maskeleme” denmektedir. Daha detaylı bilgi için tıklayınız.

konumuza dönersek; örneğin için Türkiye’deki sabit telefon numaraları için şehirler arası kodlar 02, 03 ya da 04 ile başlamaktdır. Batı illeri 02, orta kısım 03, doğu ise 04 olarak kodlanmıştır. Bunun haricinde tüm Türkiyede telefon numaraları toplam 11 hanedir. Şimdi bu bilgileri kontrol etmek için nasıl bir Regex kullanabiliriz?

Çok özet ifade edersek;  ‘ ^ ‘ başlangıcı, ‘ $ ‘sonu ifade ederken süslü parantezler içindeki numalar (örneğin  {2} ) uzunluğu ifade eder.

Karakter kümeleri için köşeli parantez ‘ [ ] ‘, sabit değerler için ise normal parantez ‘ ( ) ‘ kullanılabilir.

Bu durumda Türkiye için sabit hatları sınırlayan Regex ‘ ^(02|03|04)+([0-9]{9})$ ‘ olacaktır.

İlk seferde yazmak neredeye imkansız olsa da keyifli bir uğraş sayılabilir 🙂 Bilgisayarcı eğlencesi işte. Regex’inizi test etmek için Rubular.com‘u kullanabilirsiniz.

Benzer şekilde cep telefonları için de ‘^(05)+([0-9]{9})$’ kullanılabilir.

Peki Ax içinde bu işi nasıl yapabiliriz? Bu işlem için Global classına birer metod ekleyerek her yerden kullanmak mümkün olacaktır.

Örnek kod aşağıdaki gibi olabilir.

Hadi kendinizi zorlayın ve e posta adresi için bir regex yazmayı deneyin.

Emre TÜFEKÇİ
İstanbul

www.atol.com.tr

 


 


static boolean validatePhoneNumber(PhoneMobile    _phoneMobile)
{
    Boolean                                 isValid;
    System.Boolean                          netBool;
    System.Text.RegularExpressions.Match    myMatch;
    str                                     matchEmailPattern = "^(02|03|04)+([0-9]{9})$";
    ;
    new InteropPermission(InteropKind::ClrInterop).assert();

    myMatch     = System.Text.RegularExpressions.Regex::Match(_phoneMobile, matchEmailPattern);
    netBool     = myMatch.get_Success();
    isValid     = netBool;

    CodeAccessPermission::revertAssert();

    if(isValid)
    {
        return true;
    }
    else
    {
        return checkFailed("Lütfen '02121234567' formatında 11 hane olarak giriniz.");
    }
}

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s