正则表达式验证不起作用(电话和名称)

时间:2011-07-17 18:23:22

标签: php regex validation

即使我输入的电话号码无效,我的正则表达式也会对其进行验证并显示有效消息。任何想法都出错了?

<form action="<?php $PHP_SELF; ?>" method="POST">
Name (First Middlie  Last) : <input type="text" name="name" value=""><br />
Telephone Number : <input type="text" name="phone" value=""><br />
<input type="submit">
</form>

<?php } else {

extract($_REQUEST);

$phoneDashes = preg_replace("/\D/","", $phone);
$nameRegex =  $_POST['name'];

if(preg_match("/(\d{3})(\d{3})(\d{4})/", $phoneDashes,$matches)) {
 echo "Valid phone number <br />";
   }
else {
   echo "Not a valid phone number <br />";
}

preg_match("/(^[\-a-z]+)\s([\-a-z])\s([\-a-z]+)$/i", $nameRegex,$names);

echo "Your name: $names[3], $names[2] $names[1] <br />";
echo "Your phone Number: $matches[1]-$matches[2]-$matches[3] <br />";

}

?>

2 个答案:

答案 0 :(得分:1)

$match = preg_match("/(\d{3})(\d{3})(\d{4})/", $phoneDashes,$matches);
if($match) {
 echo "Valid phone number <br />";
   }
else {
   echo "Not a valid phone number <br />";
}

答案 1 :(得分:0)

您需要^$个锚点。试试这个:

if (preg_match('/^(\d{3})(\d{3})(\d{4})$/', $phoneDashes, $matches))
    // Valid phone number
else
    // Not valid phone number