php - php验证电话号码
问题描述
我需要表单验证方面的帮助。专门用于澳大利亚电话号码。我只能使用 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() 方法参数的东西,所以老实说,我什至不知道上面的代码在做什么。对不起我的菜鸟;)
解决方案
我正在使用锚点(^
和$
),以便识别字符串的开头和结尾。前导字符位于第一个非捕获组中,管道表示“或”。第二个非捕获组,包含“空间容忍”的 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
推荐阅读
- jquery - 代表面板标题单击到引导手风琴的内部链接
- php - Wordpress 条件添加辅助角色
- android - 确定是否从 FCM 通知调用活动
- javascript - 从数组数据构建可排序的 JQuery UI
- docker-compose - 有没有办法在测试环境中不创建构建文件夹的情况下使用 docker-compose “拉动”和“向上”?
- c# - 这是单例 + 延迟加载吗?
- docker - 有没有办法将 Docker ONBUILD 指令延迟到未来的子图像?
- php - 如何将大文件从 S3 流式传输到 laravel 视图
- python - Pandas 中的手动日期过滤器
- javascript - 如何订阅 CustomBox 模态关闭事件