我有以下代码:

 <?php
        $data="000ffe-fcc9f4 1 000fbe-fccabe";
        $pattern='/([0-9A-F]{6})-([0-9A-F]{6})$/i';
        echo "the pattern we are using is: ".$pattern."<BR>";

        preg_match_all($pattern,$data,$matches, PREG_SET_ORDER );

        print_r($matches[0]);

?>

我不明白为什么它没有找到两个 mac 地址作为匹配项。

页面上的输出如下所示:
the pattern we are using is: /([0-9A-F]{6})-([0-9A-F]{6})$/i
Array ( [0] => 000fbe-fccabe [1] => 000fbe [2] => fccabe )

我期待元素 [0] 将同时包含 000ffe-fcc9f4 和 000fbe-fccabe。
你能告诉我我做错了什么吗?

谢谢。

最佳答案

它没有找到两者的原因是因为你的正则表达式末尾有一个 $ 这意味着它只会匹配字符串末尾的模式。

尝试将 $pattern 更改为 /([0-9A-F]{6})-([0-9A-F]{6})/i 并且应该匹配两者。

关于php - 新手php正则表达式问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11893947/

10-13 02:52