PHP - 我应该使用什么正则表达式来验证输入是空的还是4位数?

时间:2016-05-02 11:29:59

标签: php regex

我目前有这个PHP代码:

$pCode = $_POST["postcode"];
if (!empty($pCode)) {
    $pCodePattern = "/^\d{4}$/";
    if (!preg_match($pCodePattern, $pCode)) {
        $pCodeMsg = "<span> post code must be 4 digits </span>";
    }
}

当我运行代码时,仍会显示错误消息。

3 个答案:

答案 0 :(得分:1)

您可以在没有任何正则表达式的情况下执行此操作

$pCode = $_POST["postcode"];
    $len=1;
    while ($pCode >= 10)
    {
      $pCode = ($pCode / 10);
      ++$len;
    }
    if($len != 4){
    $pCodeMsg = "<span> post code must be 4 digits </span>";
    }

答案 1 :(得分:0)

您需要指定\d{4}模式可以是可选的:

$pCodePattern = "/^(?:\d{4})?$/";
                   ^^^     ^^

请参阅regex demo

模式详细信息

  • ^ - 开始搅拌
  • (?: - 启动可选的非捕获组(?量词匹配一次或零次)
    • \d{4} - 4位数
  • )? - 可选非捕获组的结尾
  • $ - 字符串结尾

答案 2 :(得分:0)

$pCode = $_POST["postcode"];
if (!empty($pCode)) {
    $pCodePattern = "^(\d{4}|\s*)$";
    if (!preg_match($pCodePattern, $pCode)) {
        $pCodeMsg = "<span> post code must be 4 digits </span>";
    }
}