我想在字符串和字符串处强制执行单个问号。在JavaScript中它可以很好地工作:如何使用preg_replace追加或替换尾随问号?
var re = /[?7!1]*$/;
document.write('lolwut'.replace(re, '?'));
document.write('lolwut?'.replace(re, '?'));
document.write('lolwut??'.replace(re, '?'));
document.write('lolwut???'.replace(re, '?'));
document.write('lolwut???!!!11'.replace(re, '?'));
所有返回值等于“lolwut?” PHP变种不工作那光滑:
$re = '/[?7!1]*$/';
echo preg_replace($re, '?', 'lolwut') . "\n";
echo preg_replace($re, '?', 'lolwut?') . "\n";
echo preg_replace($re, '?', 'lolwut??') . "\n";
echo preg_replace($re, '?', 'lolwut???') . "\n";
echo preg_replace($re, '?', 'lolwut???!!!11') . "\n";
输出为:
我在做什么错在这里?
更新:
$(美元)断言串
的端断言是上下面或当前匹配点实际上不消耗任何字符之前的字符的测试。
是我的困惑在这里,与preg_replace函数隐性的全球标志一起,感谢salathe提供线索。 (你们应该投他的答案了,真的)
谁使用'7'作为问号?7777 – kennytm 2010-07-20 08:30:05
@KennyTM:lolwut ??? !!! 11 – 2010-07-20 08:34:26