2016-05-20 14 views
6

Numery "2" Numery kart BIN rozpoczynają się w październiku 2016 r. W celu sprawdzenia poprawności należy użyć wzorca regex. Dziś używamy poniższego wzoru do MasterCard, które zaczynają się od 5:Jakiego wzoru należy użyć do sprawdzania numerów kart 2 BIN MasterCard

var re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/; 
+3

jakie są możliwości w tych liczb? – rock321987

+3

Nie wiem, dlaczego to pytanie zostało odrzucone. – PamZy

+0

Wydaje mi się to bardzo jasne. – Ralph

Odpowiedz

15

Odpowiedź przez @Rawing błędnie zakłada, że ​​zakres BIN z szeregu MasterCard zostanie zmieniony na nowy zakres natomiast prawdą jest, że BIN zakres zostanie rozszerzony o w nowym zakresie.

Dlatego dla przyszłych użytkowników, którzy (na ślepo) skopiuj regex trzeba zastosować tę wersję, aby umożliwić wszystkie „ważne” numery MasterCard (z wyłączeniem Luhna-Check):

/^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$|^2(?:2(?:2[1-9]|[3-9]\d)|[3-6]\d\d|7(?:[01]\d|20))-?\d{4}-?\d{4}-?\d{4}$/ 

albo to wersja bez pozwalając kreski pomiędzy numery:

/^5[1-5]\d{14}$|^2(?:2(?:2[1-9]|[3-9]\d)|[3-6]\d\d|7(?:[01]\d|20))\d{12}$/ 

Jest to w zasadzie połączenie odpowiedzi @Rawings i pytania.

Wiem, że to nie jest ściśle odpowiedź na pytanie, ale miejmy nadzieję, że zapobiegnie niektórym błędom kopiowania i wklejania w formularzach płatności.

Extended Demo

+0

To była moja pierwsza myśl, kiedy nie widziałem "5" w oryginalnej odpowiedzi. Dzięki! – Dss

+0

@migg: working (Y) Czy możesz podać przykładowe numery mastercard dla tego zakresu tj. 2221-2720, czy potrzebuję go do testowania? –

+0

Liczby w rozszerzonej wersji demo pasują do wyrażenia regularnego, ale nie sprawdzają poprawności sumy kontrolnej wymaganej dla numerów kart kredytowych. Link do wersji demonstracyjnej z poprawnymi numerami kart kredytowych: https://regex101.com/r/cGQNpd/3 –