Ekspresi reguler adalah urutan karakter yang membentuk pola pencarian. Ekspresi reguler terutama digunakan untuk mencari, memvalidasi, dan mengubah teks atau string.

Pelajari cara memvalidasi nomor kartu kredit seperti Mastercard, Visa Card, dan American Express dengan ekspresi reguler.

Kapan Menggunakan RegEx untuk Memvalidasi Nomor Kartu Kredit?

Biaya layanan pihak ketiga untuk setiap upaya transaksi. Apakah transaksi berhasil atau tidak, Anda harus membayar biaya. Dalam kasus seperti itu, Anda ingin menolak nomor kartu kredit yang jelas tidak valid. Anda dapat dengan cepat memvalidasi nomor kartu kredit menggunakan ekspresi reguler.

Tetapi Anda tidak dapat sepenuhnya mengandalkan validasi ekspresi reguler untuk fitur pembayaran Anda. Penerbit kartu secara teratur mengubah pola nomor kartu mereka (memperkenalkan pola baru atau menarik yang lama), sehingga metode regex bukanlah solusi yang paling kuat. Meskipun Anda dapat mencoba untuk tetap mengikuti pola kartu dari sumber seperti Wikipedia yang sering diperbarui.

Anda juga dapat menggunakan regex untuk menemukan merek kartu dengan cepat yang kemudian dapat Anda gunakan untuk menampilkan logo atau label.

Ekspresi reguler memiliki beberapa kasus penggunaan praktis. Perintah grep Linux mungkin adalah kasus penggunaan regex praktis yang paling umum.

Kode yang digunakan dalam proyek ini tersedia di a repositori GitHub dan gratis untuk Anda gunakan di bawah lisensi MIT.

RegEx untuk Memvalidasi Nomor Mastercard

Nomor Mastercard valid jika memenuhi kondisi berikut:

  1. String tidak boleh berisi karakter khusus, huruf, atau spasi putih.
  2. Jumlah karakter harus sama dengan 16.
  3. String harus dimulai dengan rentang angka 2 digit (mulai dari 51 hingga 55) atau rentang angka 4 digit (mulai dari 2221 hingga 2720).
    • Jika string dimulai dengan rentang angka 2 digit (mulai dari 51 hingga 55), 14 digit berikutnya harus berupa angka antara 0 hingga 9.
    • Jika string dimulai dengan rentang angka 4 digit (mulai dari 2221 hingga 2720), 12 digit berikutnya harus berupa angka antara 0 hingga 9.

Regex berikut memenuhi kondisi di atas dan dapat memvalidasi nomor Mastercard:

^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}$

Jika Anda tidak nyaman dengan ungkapan di atas, periksa panduan pemula untuk ekspresi reguler Pertama.

Anda dapat menggunakan regex di atas untuk memvalidasi nomor Mastercard dalam bahasa pemrograman apa pun. Berikut cara melakukannya dengan Python:

impor ulang

defperiksaMasterCardNo(nomor kartu):
regex = "^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 = kompilasi ulang (regex)

jika (ulang.mencari(R, kartuNo)):
mencetak("Sah")
kalau tidak:
mencetak("Tidak valid")

kartu1 = "5110762060017101"
checkMasterCardNo (kartu1)

kartu2 = "8632458236982734"
checkMasterCardNo (kartu2)

Menjalankan kode ini akan mengonfirmasi bahwa angka pertama valid tetapi yang kedua tidak:

RegEx untuk Memvalidasi Nomor Kartu Visa

Nomor Kartu Visa berlaku jika memenuhi ketentuan berikut:

  1. String tidak boleh berisi karakter khusus, huruf, atau spasi putih.
  2. String harus dimulai dengan 4.
  3. Jumlah karakter harus sama dengan 13 atau 16. Kartu visa lama memiliki 13 karakter dan yang baru memiliki 16 karakter.
    • Jika jumlah karakter sama dengan 13, 12 digit terakhir harus berupa angka antara 0 hingga 9.
    • Jika jumlah karakter sama dengan 16, 15 digit terakhir harus berupa angka antara 0 sampai 9.

Regex berikut memenuhi ketentuan di atas dan Anda dapat menggunakannya untuk memvalidasi nomor Kartu Visa:

^4[0-9]{12}(?:[0-9]{3})?$

Di bawah ini adalah pendekatan Python untuk memvalidasi nomor Kartu Visa:

impor ulang

defcheckVisaCardNo(nomor kartu):
regex = "^4[0-9]{12}(?:[0-9]{3})?$"
r = kompilasi ulang (regex)

jika (ulang.mencari(R, kartuNo)):
mencetak("Sah")
kalau tidak:
mencetak("Tidak valid")

kartu1 = "4539890694174109"
checkVisaCardNo (kartu1)

kartu2 = "49237429498"
checkVisaCardNo (kartu2)

Sekali lagi, keluaran mengonfirmasi angka pertama valid sedangkan yang kedua tidak valid:

RegEx untuk Memvalidasi Nomor Kartu American Express

Nomor kartu American Express valid jika memenuhi ketentuan berikut:

  1. String tidak boleh berisi karakter khusus, huruf, atau spasi putih.
  2. Jumlah karakter ini harus sama dengan 15.
  3. String harus dimulai dengan 34 atau 37.
  4. 13 digit terakhir harus berupa angka antara 0 hingga 9.

Regex berikut memenuhi ketentuan di atas dan Anda dapat menggunakannya untuk memvalidasi nomor Kartu American Express:

^3[47][0-9]{13}$

Anda dapat memvalidasi nomor Kartu American Express menggunakan kode Python berikut:

impor ulang

defcheckAmericanExpressCardNo(nomor kartu):
regex = "^3[47][0-9]{13}$"
r = kompilasi ulang (regex)

jika (ulang.mencari(R, kartuNo)):
mencetak("Sah")
kalau tidak:
mencetak("Tidak valid")

kartu1 = "372831730491196"
checkAmericanExpressCardNo (kartu1)

kartu2 = "84732593847743042"
checkAmericanExpressCardNo (kartu2)

Sekali lagi, output mengonfirmasi bahwa angka pertama valid, tetapi angka kedua tidak valid:

Aplikasi Ekspresi Reguler

Anda dapat menggunakan beberapa regex yang cukup sederhana untuk memvalidasi nomor kartu kredit umum. RegEx adalah alat canggih yang dapat Anda gunakan untuk pra-pemrosesan data, pencocokan pola, ekstraksi data, analisis leksikal, pemrosesan bahasa alami, pengikisan web, dan banyak lagi. Anda juga dapat menggunakan ekspresi reguler dalam pengembangan web untuk menangani validasi formulir HTML.