-1

可能重复:
用于电话号码验证的综合正则表达式

请我为邮件和电话号码验证创建了这个功能,邮件自己的作品,bt 手机自己的不起作用。

if(trim($_POST['email']) == '')  {
    $hasError = true;
} else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$",     
         trim($_POST['email']))) {
    $hasError = true;
} else {
    $email = trim($_POST['email']);
}

if(trim($_POST['phonenumber']) == '')  {
    $hasError = true;
} else if (!eregi("/^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/$",      
          trim($_POST['phonenumber']))) {
    $hasError = true;
} else {
    $phonenumber= trim($_POST['phonenumber']);
}
4

2 回答 2

0

首先,您应该使用preg_match而不是eregi.

除此之外,人们以多种方式输入电话号码。处理它们的最简单方法是去掉任何不是数字的东西,看看你是否有十个数字:

$number = preg_replace("/\D/","",$_POST['phonenumber']);
if( strlen($number) == 10) { /* ok */ }
else { /* error */ }
于 2012-06-21T16:47:20.100 回答
0

我认为更好的方法是从输入中删除所有非数字字符并检查长度是否在一定范围内。特别是如果您将此数据存储在数据库中,这样您就不会最终存储不必要的数据。

x如果您想允许扩展,您可能希望保留字符。这是一个从字符串中删除所有非数字字符的函数(除了x)。

function removeNonNumeric($string) {
    return preg_replace('/[^\dx]/', '', $string)
}

当您需要输出结果时,您可以根据需要对其进行格式化。

于 2012-06-21T17:01:52.887 回答