【发布时间】:2013-03-15 19:31:11
【问题描述】:
如何验证英国电话号码?我从这个网站复制了答案,但这个答案只接受手机号码。我想同时接受固定电话和手机号码。有可能吗?
# @reference: http://stackoverflow.com/questions/8099177/validating-uk-phone-numbers-in-php
$telephone = "01752311149"; // not ok.
$telephone = "07742055388"; // ok.
$pattern = "/^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/";
if (!preg_match($pattern, $telephone))
{
$error = true;
$message.='<error elementid="telephone" message="invalid" />';
}
我已经尝试使用下面的这个正则表达式,但它根本不起作用,
#http://stackoverflow.com/questions/14512810/regular-expression-mobile-and-landline-number
$pattern = "/^\(0\d{1,2}\)\d{3}-\d{4}$/";
【问题讨论】:
-
建议您阅读并了解正则表达式的工作原理,然后修改mobile-accept number。请注意,
+441、+442、01、02都是有效的固定电话号码。 -
您确定这是个好主意吗?我发现没有什么比仅仅因为我碰巧是外国人而不会接受我的电话号码的表格更令人恼火的了。只要您不实际调用它,您就无法再确定该号码在验证后确实存在 - 请参阅
0207 99999999。此外,下次伦敦再次重组其编号计划时(过去 25 年已经进行了 3 次),您必须更新您的正则表达式。 -
我建议您查看
libphonenumber- 它是 Google 在 Android 中用于验证和格式化电话号码的开源库。 -
感谢您的提示。我只需要在浏览器上进行验证。没有安卓或苹果。谢谢。
标签: php regex preg-match