用PHP验证英国电话号码

Ric*_*and 1 php format phone-number

我购买了一份联系表格.很棒的小东西,但我需要转换电话号码的验证,以允许英国数字格式 - 换句话说,允许空格.

现在它验证没有空格,最小长度为8个字符:

if(is_numeric($phone))
{
    if(!$phone || strlen($phone) < 8)
    {
        $error .= "Please enter your phone number without spaces.<br />";
    }
}
else
{
    $error .= "Please enter numeric characters in the phone number field.<br />";
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*ker 7

对于正则表达式模式,电话号码通常很糟糕,这正是您所需要的.

这种模式例如:

$pattern = "/^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/";

$match = preg_match($pattern,$input);

if ($match != false) {
    // We have a valid phone number
} else {
    // We have an invalid phone number
}
Run Code Online (Sandbox Code Playgroud)

该模式将与+44匹配或不匹配,例如

所有这些将匹配:

07222 555555

(07222) 555555

+44 7222 555 555
Run Code Online (Sandbox Code Playgroud)

这些不会

7222 555555

+44 07222 555555

(+447222) 555555
Run Code Online (Sandbox Code Playgroud)

有一些网站提供教程/备忘单等正则表达式尝试其中一些:

http://regexlib.com/Default.aspx

以及一个非常好的堆栈溢出帖子:

用于电话号码验证的全面正则表达式

  • 对于非手机号码(07),这不会返回无效吗? (2认同)