2016-06-20 2 views
-2

Мне нужно регулярное выражение, которое замаскирует 16-значный номер кредитной карты, но не замаскирует номер отслеживания ИБП. Номера отслеживания UPS начинаются с «1Z».Кредитные карты регулярного выражения

Я пробовал^(?! 1Z) + [0-9] {16}

Спасибо, Andrew

+0

Вы даже попробовали что-нибудь? –

+0

^(?! 1Z). + [0-9] {16}, но он выдает ошибку. – AWooster

+0

Пожалуйста, укажите ошибку и код, чтобы воспроизвести это. – forgivenson

ответ

2

По this tutorial:.

^(?:4[0-9]{12}(?:[0-9]{3})?   # Visa 
| 5[1-5][0-9]{14}     # MasterCard 
| 3[47][0-9]{13}     # American Express 
| 3(?:0[0-5]|[68][0-9])[0-9]{11} # Diners Club 
| 6(?:011|5[0-9]{2})[0-9]{12}  # Discover 
| (?:2131|1800|35\d{3})\d{11}  # JCB 
)$ 

Это обеспечит номер вашей кредитной карты действителен. Однако если вы хотите проверить, что ваш 16-значный номер не является номером отслеживания ИБП, это должно сделать:

\d{16} 
+0

Это сработало, спасибо! – AWooster

Смежные вопросы