php подтвердить номер телефона - PullRequest
0 голосов
/ 12 октября 2018

Мне нужна помощь с проверкой формы.Специально для австралийских телефонных номеров.Я могу выполнить только базовую проверку с использованием метода preg_match (), но я застрял с этим.

Должен начинаться с +614, (04) или 04;тогда разрешается любая группировка из 8 дополнительных цифр
и одинарных пробелов.

Это критерий проверки, любая помощь приветствуется.

        if (!preg_match("/^[0-9 ]*$/",$name)) {
        $numberErr = "Number format is invalid"
    }

это все, что я могу сделать, я не делаюзнать, как добавить условия для начала номера (начните с +614, (04) или 04.

Редактировать: также нужна помощь с проверкой кредитной карты, критерии проверки:
Любая группировка из 12- допускается 19 чисел и один пробел.

if(!preg_match('/[0-9]{12}(?:[0-9]{3})?$/', $card)) {
        $cardErr = "Invalid card number";
    }

Я не могу найти ничего, что учитывает параметры метода preg_match (), поэтому я, честно говоря, даже не знаю, что делает приведенный выше код.;)

1 Ответ

0 голосов
/ 12 октября 2018

Я использую якоря (^ и $), чтобы идентифицировать начало и конец строки.Ведущие символы находятся в первой не захватывающей группе с каналами, которые представляют «ИЛИ»Вторая группа без захвата содержит 8-значную подстроку "терпимая к пробелам".

Сообщите мне, если у вас есть какие-либо дополнительные случаи, которые не обрабатываются должным образом.

Код: ( Демо )

$aussie_mobiles = ['+614 1234 5678', '02 11112222', '(04)98765432', '0413572468', '+614 1 2 3 4 5 6 7 8'];

foreach ($aussie_mobiles as $mob) {
    echo "$mob: ";
    if (preg_match('~^(?:\+614|\(04\)|04)(?: *\d){8}$~', $mob)) {
        echo "pass\n";
    } else {
        echo "fail\n";
    }
}

Выход:

+614 1234 5678: pass
02 11112222: fail
(04)98765432: pass
0413572468: pass
+614 1 2 3 4 5 6 7 8: pass
...