2016-05-20 19 views
6

I numeri BIN della serie "2" serie iniziano a ottobre 2016. Quale modello regolare deve essere utilizzato per convalidarli. Oggi, si usa il modello seguito per MasterCard, che iniziano con 5:Quale modello deve essere utilizzato per convalidare 2 numeri BIN MasterCard

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

quali sono le possibilità a questi numeri? – rock321987

+3

Non so perché questa domanda sia stata votata. – PamZy

+0

Questo mi sembra molto chiaro. – Ralph

risposta

15

La risposta da @Rawing erroneamente assume che la gamma BIN di un numero MasterCard sarà cambiato alla nuova gamma, mentre è vero che la BIN la gamma sarà estesa dalla nuova gamma.

Pertanto per i visitatori futuri che (alla cieca) copiare l'espressione regolare si dovrebbe usare questa versione per consentire a tutti i numeri "validi" MasterCard (esclusi Luhn-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}$/ 

o questa versione senza consentire trattini tra il numeri:

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

Questa è fondamentalmente una combinazione di risposta @Rawings e la domanda.

So che questo non risponde rigorosamente alla domanda, ma si spera che si evitino alcuni errori di copia-incolla nei moduli di pagamento.

Extended Demo

+0

Questo è stato il mio primo pensiero quando non ho visto un "5" nella risposta originale. Grazie! – Dss

+0

@migg: working (Y) Potete per favore fornire numeri di mastercard di esempio per il suddetto intervallo i.e 2221-2720, ne ho bisogno per il test? –

+0

I numeri nella demo estesa corrispondono alla regex ma falliscono la convalida del checksum necessaria per i numeri delle carte di credito. Link a una demo con numeri di carta di credito validi: https://regex101.com/r/cGQNpd/3 –