Помогите с регуляркой для проверки номера банковской карты

Статус
В этой теме нельзя размещать новые ответы.

Extalionez

Клоун
Заблокирован
Регистрация
21 Авг 2008
Сообщения
368
Реакции
191
  • Автор темы
  • Заблокирован
  • #1
Доброго времени суток! Собственно сабж. Правда необходимо с учётом Для просмотра ссылки Войди или Зарегистрируйся.
 
По сабжу
Код:
/(^[3|4|5|6])([0-9]{15}+)/
Но банковские карты проверяются по алгоритму Луна, а не этим способом.
 
Да потом код лучше проверить по алгоритму Луна:

PHP:
function is_valid_credit_card($s) {
    // оставить только цифры
    $s = strrev(preg_replace('/[^\d]/','',$s));
 
    // вычисление контрольной суммы
    $sum = 0;
    for ($i = 0, $j = strlen($s); $i < $j; $i++) {
        // использовать четные цифры как есть
        if (($i % 2) == 0) {
            $val = $s[$i];
        } else {
            // удвоить нечетные цифры и вычесть 9, если они больше 9
            $val = $s[$i] * 2;
            if ($val > 9)  $val -= 9;
        }
        $sum += $val;
    }
 
    // число корректно, если сумма равна 10
    return (($sum % 10) == 0);
}
 
if (! is_valid_credit_card('4111 1111 1111 1234')) {
    echo 'ошибка в номере';
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху