在过去,我只需要使用preg_match仅用于美国,例如:
elseif(!preg_match("/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/", $telefon))
{
$error = "Your message has not been sent as you did not enter your telephone number, please try again.";
selected_values();
}
但我不需要扩展以包含英国和德国的号码。
这些数字通常用[空格]和(括号)格式化。
我尝试了以下成功:
elseif(!preg_match("/^[0-9]$/", $telefon))
任何人都可以帮我一个包含许多不同电话号码的preg_match吗?
感谢
答案 0 :(得分:0)
对于英国的数字,有一个非常好的答案here。 (不是接受的答案!正如评论所说,这不是一个好的答案)
但如果你试图接受一般的国际号码,你需要对你所接受的内容保持开放 - 除了括号和空格之外,你还可以找到使用加号,点,连字符,斜线的人,等等。
国际电话号码格式有一个公认的标准,如下所示:
+44.1234567890
其中+44
是国际拨号代码(本例中为英国),后跟一个点,后跟剩余的数字(减去前导零,如果适用),没有任何其他格式。
当然,如果您需要接受用户输入的数字以及他们使用的任何格式,这无济于事,但如果您将此格式视为目标,则可能会有所帮助 - 即接受用户输入的内容,并尝试将其重新格式化为此标准。
一旦你决定这样做,这个过程就变成了从主号码中删除任何格式的情况。只要数字位数正确,您就不必担心提供的格式。然后只是添加国家代码和点,然后就完成了。