php验证电话号码

时间:2018-10-12 11:20:23

标签: php forms validation

我需要有关表单验证的帮助。专门用于澳大利亚的电话号码。我只能使用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 :(得分:0)

我正在使用锚点(^$),以便标识字符串的开头和结尾。前导字符在第一个非捕获组中,带有代表“ OR”的管道。第二个非捕获组包含“可忍受空格”的8位子字符串。

让我知道您是否有没有正确处理的附带物品。

代码:(Demo

$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