var re=/^[^a-z_]+(aa)/i;
alert(" $#%@#$aa".replace(re,"bb"));
alert("_aa".replace(re,"bb"));
alert(" aa".replace(re,"bb"));
alert("dfgdfaa".replace(re,"bb"));
alert(" $#%@#$aa".replace(re,"bb"));
alert("_aa".replace(re,"bb"));
alert(" aa".replace(re,"bb"));
alert("dfgdfaa".replace(re,"bb"));
preg_replace函数
试试
改为:$re =preg_replace("/([^a-z\\\$\d_])aa/","\\1bb",$re);
$re =preg_replace("/([^\W])aa/","\\1bb",$re);