PHPで正規表現を使った置換について質問です。
3以上の数字が、特定の文字列(Xとする)の後に来た場合にマッチさせ置換します。
数字は全角でも半角でもマッチとし、マッチした部分を\\1後で使います。
数字は二桁までを範囲とします。

$pattern = "/X([0-9]?[3-9]|[0-9]?[3-9])/";
preg_replace ("$pattern", "X<span class=\"level\">$1</span>", $aaaa);


これだとうまくマッチしないのですが、何が原因でしょうか。