Regex验证不工作(电话和姓名)


regex validation not working (phone and name)

即使我键入一个无效的电话号码,我的正则表达式也会对它进行验证并显示有效的消息。你知道哪里出错了吗?

<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 />";
}
?>

try

$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 />";
}

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

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