我需要有关表单验证的帮助。专门用于澳大利亚的电话号码。我只能使用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()方法参数的东西,所以老实说,我什至不知道上面的代码在做什么。 对不起,我的笨蛋;)
答案 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