Preg_match() 与“{}”和“?”的用法

Preg_match() usage with "{}" and "?"

我目前正在尝试雷鬼音乐 (PCRE) 和 PhP。

函数 pre_match() 似乎无法正常使用符号 {} 和 ?我想知道为什么。有人能帮我吗?

这是我仅用于示例的代码:

    <?php
        $search = "aaaah";

        //Return "valid" while I ask for 3 "a" specifically
        if(preg_match("&a{3}&", $search)){
              echo 'Valid <br/>';
        }else{
              echo 'Invalid <br/>';
        }

        //Also return "valid" while I ask for 0 or 1 "a"
        if(preg_match("&a?&", $search)){
              echo 'Valid <br/>';
        }else{
              echo 'Invalid <br/>';
        }
    ?>

一定是我理解错了什么。有人可以解释吗?我在任何地方都找不到任何东西。先感谢您!

我正在使用带有 Mac 的 MAMP 并使用 utf-8 编码。

您得到的预期结果为:

  1. 您连续要求 3 个 a,在您的示例中有两个可能的系列,前 3 个 a 和后 3 个 a的。所以这是一场比赛,因为您没有指定在您的 3 a 系列之前或之后必须发生的事情。
  2. 您要求一个可选的 a 字符。任何输入都将与您正在寻找 0 或 1 a 的内容相匹配,并且对于您输入的所有内容,无论它是否包含 a,都将始终为真。