Normal ifade, bir arama modeli oluşturan bir karakter dizisidir. Normal ifadeler çoğunlukla metinleri veya dizeleri aramak, doğrulamak ve dönüştürmek için kullanılır.
Mastercard, Visa Card ve American Express gibi kredi kartı numaralarını normal ifadelerle nasıl doğrulayacağınızı öğrenin.
Bir Kredi Kartı Numarasını Doğrulamak için RegEx Ne Zaman Kullanılır?
Üçüncü taraf hizmetleri, her işlem denemesi için ücret alır. İşlem başarılı olsun veya olmasın, ücretleri ödemeniz gerekir. Bu gibi durumlarda, açıkça geçersiz olan kredi kartı numaralarını reddetmek istiyorsunuz. Normal ifadeleri kullanarak kredi kartı numaralarını hızlı bir şekilde doğrulayabilirsiniz.
Ancak, ödeme özelliğiniz için normal ifade doğrulamasına tamamen güvenemezsiniz. Kart veren kuruluşlar, kart numarası kalıplarını düzenli olarak değiştirirler (yeni kalıplar sunar veya eskilerini geri çekerler), bu nedenle normal ifade yöntemi en sağlam çözüm değildir. Şunun gibi bir kaynaktan kart modellerini takip etmeye çalışabilirsiniz: Vikipedi bu sık sık güncellenir.
Daha sonra logoları veya etiketleri görüntülemek için kullanabileceğiniz kart markasını hızlı bir şekilde bulmak için normal ifadeyi de kullanabilirsiniz.
Düzenli ifadelerin birkaç pratik kullanım durumu vardır. Linux grep komutu muhtemelen regex'in en yaygın pratik kullanım durumudur.
Bu projede kullanılan kod bir GitHub deposu ve MIT lisansı altında ücretsiz olarak kullanabilirsiniz.
RegEx, Mastercard Numarasını Doğrulayacak
Bir Mastercard numarası, aşağıdaki koşulları sağlaması durumunda geçerlidir:
- Dize herhangi bir özel karakter, alfabe veya boşluk içermemelidir.
- Karakter sayısı 16'ya eşit olmalıdır.
- Dize, 2 basamaklı bir sayı aralığı (51 ila 55 arasında değişen) veya 4 basamaklı bir sayı aralığı (2221 ila 2720 arasında değişen) ile başlamalıdır.
- Dize 2 basamaklı bir sayı aralığında (51 ile 55 arasında) başlıyorsa, sonraki 14 basamak 0 ile 9 arasında bir sayı olmalıdır.
- Dize 4 basamaklı bir sayı aralığıyla başlıyorsa (2221 ile 2720 arasında değişir), sonraki 12 basamak 0 ile 9 arasında bir sayı olmalıdır.
Aşağıdaki normal ifade, yukarıdaki koşulları karşılar ve bir Mastercard numarasını doğrulayabilir:
^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[ 0-1]\\d|2720)[0-9]{12}$
Yukarıdaki ifadeden memnun değilseniz, kontrol edin düzenli ifadeler için başlangıç kılavuzu Birinci.
Mastercard numarasını herhangi bir programlama dilinde doğrulamak için yukarıdaki normal ifadeyi kullanabilirsiniz. Python'da bunu şu şekilde yapabilirsiniz:
içe aktarmak tekrar
kesincheckMasterCardNo(kartNo):
normal ifade = "^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[ 0-1]\\d|2720)[0-9]{12}$"
r = yeniden derleme (normal ifade)eğer (tekrar.aramak(R, kartHayır)):
Yazdır("Geçerli")
başka:
Yazdır("Geçerli değil")kart1 = "5110762060017101"
checkMasterCardNo (kart1)
kart2 = "8632458236982734"
checkMasterCardNo (kart2)
Bu kodu çalıştırmak, ilk sayının geçerli olduğunu ancak ikincinin geçerli olmadığını onaylayacaktır:
RegEx, Visa Kart Numarasını Doğrulayacak
Bir Visa Kart numarası, aşağıdaki koşulları karşılaması durumunda geçerlidir:
- Dize herhangi bir özel karakter, alfabe veya boşluk içermemelidir.
- Dize 4 ile başlamalıdır.
- Karakter sayısı 13 veya 16'ya eşit olmalıdır. Eski vize kartları 13 karakterden, yenileri ise 16 karakterden oluşuyor.
- Karakter sayısı 13 ise son 12 hane 0 ile 9 arasında bir sayı olmalıdır.
- Karakter sayısı 16 ise son 15 hane 0 ile 9 arasında bir sayı olmalıdır.
Aşağıdaki normal ifade yukarıdaki koşulları karşılar ve bir Visa Card numarasını doğrulamak için kullanabilirsiniz:
^4[0-9]{12}(?:[0-9]{3})?$
Aşağıda bir Visa Card numarasını doğrulamak için Python yaklaşımı yer almaktadır:
içe aktarmak tekrar
kesincheckVisaCardNo(kartNo):
normal ifade = "^4[0-9]{12}(?:[0-9]{3})?$"
r = yeniden derleme (normal ifade)eğer (tekrar.aramak(R, kartHayır)):
Yazdır("Geçerli")
başka:
Yazdır("Geçerli değil")kart1 = "4539890694174109"
checkVisaCardNo (kart1)
kart2 = "49237429498"
checkVisaCardNo (kart2)
Çıktı yine birinci sayının geçerli olduğunu, ikinci sayının geçersiz olduğunu onaylar:
RegEx, American Express Kart Numarasını Doğrulayacak
Bir American Express kart numarası, aşağıdaki koşulları sağlaması durumunda geçerlidir:
- Dize herhangi bir özel karakter, alfabe veya boşluk içermemelidir.
- Bu karakter sayısı 15'e eşit olmalıdır.
- Dize 34 veya 37 ile başlamalıdır.
- Son 13 hane 0 ile 9 arasında bir sayı olmalıdır.
Aşağıdaki normal ifade yukarıdaki koşulları karşılar ve bunu bir American Express Card numarasını doğrulamak için kullanabilirsiniz:
^3[47][0-9]{13}$
Aşağıdaki Python kodunu kullanarak bir American Express Card numarasını doğrulayabilirsiniz:
içe aktarmak tekrar
kesincheckAmericanExpressCardNo(kartNo):
normal ifade = "^3[47][0-9]{13}$"
r = yeniden derleme (normal ifade)eğer (tekrar.aramak(R, kartHayır)):
Yazdır("Geçerli")
başka:
Yazdır("Geçerli değil")kart1 = "372831730491196"
checkAmericanExpressCardNo (kart1)
kart2 = "84732593847743042"
checkAmericanExpressCardNo (kart2)
Çıktı bir kez daha ilk sayının geçerli olduğunu, ancak ikinci sayının geçersiz olduğunu onaylar:
Normal İfadelerin Uygulamaları
Genel kredi kartı numaralarını doğrulamak için oldukça basit bazı normal ifadeler kullanabilirsiniz. RegEx, veri ön işleme, kalıp eşleştirme, veri çıkarma, sözlük analizi, doğal dil işleme, web kazıma ve daha fazlası için kullanabileceğiniz güçlü bir araçtır. HTML formlarının doğrulanmasını gerçekleştirmek için web geliştirmede normal ifadeler de kullanabilirsiniz.