Pertanyaan Tes nomor kartu kredit Regex


Saya sedang menguji satu aplikasi di mana pola Regex cocok dengan kartu kredit, maka nomor tersebut harus disorot. Saya menggunakan situs http://regexpal.com/ untuk membuat nomor kartu kredit uji coba untuk pengujian saya. persyaratan saya adalah memiliki nomor kartu kredit yang valid yang dapat memiliki "-" dan / atau "," di antara mereka. Saya tidak berhasil membuat angka seperti ketika saya mengujinya menggunakan situs

http://regexpal.com.

Saya perlu beberapa nomor kredit dengan skenario di bawah ini

  1. nomor kartu kredit valid yang dapat memiliki "-" di antara digit mana pun.
  2. nomor kartu kredit valid yang dapat memiliki "," di antara digit mana pun.
  3. nomor kartu kredit yang valid yang dapat memiliki "bungkusan" atau "-" di antara digit mana pun.

31
2018-02-16 17:05


asal


Jawaban:


Menghapus semua , dan - dan non-digit lain dari string pertama.

Kemudian gunakan regex ini yang cocok dengan kartu Visa, MasterCard, American Express, Diners Club, Discover, dan JCB:

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


46
2018-02-16 17:08



Ekspresi reguler vendor kartu kredit umum:

  • Kartu Amex: ^3[47][0-9]{13}$
  • BCGlobal: ^(6541|6556)[0-9]{12}$
  • Kartu Carte Blanche: ^389[0-9]{11}$
  • Kartu Diners Club: ^3(?:0[0-5]|[68][0-9])[0-9]{11}$
  • Temukan Kartu: ^65[4-9][0-9]{13}|64[4-9][0-9]{13}|6011[0-9]{12}|(622(?:12[6-9]|1[3-9][0-9]|[2-8][0-9][0-9]|9[01][0-9]|92[0-5])[0-9]{10})$
  • Kartu Pembayaran Insta: ^63[7-9][0-9]{13}$
  • Kartu JCB: ^(?:2131|1800|35\d{3})\d{11}$
  • KoreanLocalCard: ^9[0-9]{15}$
  • Kartu Laser: ^(6304|6706|6709|6771)[0-9]{12,15}$
  • Kartu Maestro: ^(5018|5020|5038|6304|6759|6761|6763)[0-9]{8,15}$
  • MasterCard: ^5[1-5][0-9]{14}$
  • Kartu Solo: ^(6334|6767)[0-9]{12}|(6334|6767)[0-9]{14}|(6334|6767)[0-9]{15}$
  • Ganti Kartu: ^(4903|4905|4911|4936|6333|6759)[0-9]{12}|(4903|4905|4911|4936|6333|6759)[0-9]{14}|(4903|4905|4911|4936|6333|6759)[0-9]{15}|564182[0-9]{10}|564182[0-9]{12}|564182[0-9]{13}|633110[0-9]{10}|633110[0-9]{12}|633110[0-9]{13}$
  • Kartu Pembayaran Union: ^(62[0-9]{14,17})$
  • Kartu Visa: ^4[0-9]{12}(?:[0-9]{3})?$
  • Visa Master Card: ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$

124
2018-04-22 22:21



Untuk Kartu Debit Rupay: ^6[0-9]{15}$


6
2018-01-06 12:30



Jawaban yang diterima sangat bagus, tetapi untuk mengakomodasi BIN MasterCard baru, saya yakin bahwa ini perlu diperbarui ke:

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

(Bagian penting yang ada [25][1-7][0-9]{14}, karena digit pertama sekarang bisa menjadi 2 atau 5 dan digit kedua bisa sampai 7)

Tolong benarkan saya jika saya salah!


6
2018-03-29 20:32



Regx untuk kartu Rupay:

(508 [5-9] [0-9] {12}) | (6069 [8-9] [0-9] {11}) | (607 [0-8] [0-9] {12}) | (6079 [0-8] [0-9] {11}) | (608 [0-5] [0-9] {12}) | (6521 [5-9] [0-9] {11} ) | (652 [2-9] [0-9] {12}) | (6530 [0-9] {12}) | (6531 [0-4] [0-9] {11})

menggunakan seri bin: 508500 - 508999, 606985 - 606999, 607.000 - 607899, 607900 - 607984, 608001 - 608500, 652150 --- 652199, 652200 --- 652999, 653.000 --- 653099, 653100 --- 653149,


1
2018-02-10 09:52



Data Pertama memvalidasi 15 digit untuk Amex dan 16 untuk visa, mc, temukan, pengunjung, dan jcb jadi saya hanya mengirim nomor kartu kepada mereka jika jumlahnya 15 atau 16 digit menggunakan ini:

^[0-9]{15}(?:[0-9]{1})?$

1
2017-09-14 17:04



Selain semua di atas, inilah regex untuk MasterCards baru, yang mencakup 2221-2720 BIN:

^5[1-5][0-9]{0,14}|^(222[1-9]|2[3-6]\\d{2}|27[0-1]\\d|2720)[0-9]{0,12}

Perhatikan, regex ini akan cocok jika pengguna mulai mengetikkan digit kartu, yang sesuai dengan MasterCard. Misalnya, jika jenis pengguna "222185" maka regex akan cocok, karena tidak ada jenis kartu lain yang dimulai "2221". Regex ini mungkin berguna jika Anda ingin menampilkan jenis kartu saat mengetikkan digit pertama dari kartu.

Atau, jika Anda mau "setelah kejadian" cocok, Anda dapat mengubah bagian terakhir dari {0,14} dan {0,12} untuk {14} dan {12}:

^5[1-5][0-9]{14}|^(222[1-9]|2[3-6]\\d{2}|27[0-1]\\d|2720)[0-9]{12}

1
2018-04-18 09:09



Saya datang dengan regex yang memungkinkan untuk garis dan spasi. Uji di sini: https://regex101.com/r/Rx2iWD/1

Untuk mengizinkan koma (yang saya anggap tidak biasa), cukup tambahkan ke sep definisi.

Di PHP:

$ccPatt = '/
    (?(DEFINE)
        (?<sep> [ -]?)
    )
    (?<!\d)(?:
      \d{4} (?&sep) \d{4} (?&sep) \d{4} (?&sep) \d{4}               # 16 digits
    | \d{3} (?&sep) \d{3} (?&sep) \d{3} (?&sep) \d (?&sep) \d{3}    # 13 digits
    | \d{4} (?&sep) \d{6} (?&sep) \d{4}                             # 14 digits
    | \d{4} (?&sep) \d{6} (?&sep) \d{5}                             # 15 digit card
    )(?!\d)
/xu';

0
2017-11-10 23:20



Regex untuk Jaringan Kartu Terkemuka

Kartu Master(2-Bin, 5-Bin keduanya): "(?: 5 [1-5] [0-9] {2} | 222 [1-9] | 22 [3-9] [0-9] | 2 [3-6] [0-9] {2} | 27 [01] [0-9] | 2720) [0-9] {12} "

Visa: "^ 4 [0-9] {6,} $"

Klub Diner: "(^ 30 [0-5] [0-9] {11} $) | (^ (36 | 38) [0-9] {12} $)"

American Express: "^ [34 | 37] [0-9] {14} $"

JCB: "(^ 3 [0-9] {15} $) | (^ (2131 | 1800) [0-9] {11} $)"

Menemukan: "^ 6011 -? \ D {4} -? \ D {4} -? \ D {4} $"


0
2017-11-23 08:36