【问题标题】:regex validation not working (phone and name)正则表达式验证不起作用(电话和姓名)
【发布时间】:2011-07-17 18:23:21
【问题描述】:

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

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

}

?>

【问题讨论】:

  • if 语句中使用什么字符串?
  • 电话号码字符串?这就是问题所在吗?
  • 不,你用什么值得到错误的结果?

标签: php regex validation


【解决方案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 />";
}

【讨论】:

  • 嗯.. 不,这也不起作用。无论我输入什么,它都会显示有效数字。还有什么建议吗?感谢您的帮助。
  • 太棒了。是的,它有效。你愿意帮我解决我的另一个 php 问题吗?如果您有兴趣,我愿意算出一个价格。
  • 当然。给我你的 Skype/邮件
  • 向您发送了一封电子邮件。您现在可以删除您的电子邮件(评论)
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多