我正在学习正则表达式,我正在测试用户代理上的一些字符串查找/替换。
我的用户代理很少:
我可以替换“.net clr \ d”,但它无法正常工作。
$ua = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 4.1; .NET CLR 12858)';
$r = preg_replace('/.NET CLR \d/i', '', $ua);
var_dump($r);
我得到:
Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 4.1; 2858; .0.6143)
显然我错过了什么,但是什么?感谢
答案 0 :(得分:1)
使用\d+
也可以转义点(.
):
$r = preg_replace('/\.NET CLR \d+/i', '', $ua);
如果你想删除数字(0-9
)+点(.
),那么
$r = preg_replace('/\.NET CLR [\d.]+/i', '', $ua);
答案 1 :(得分:1)
你的正则表达式不遵守版本号的小数点,这就是为什么它匹配到.
之前的所有内容。改变你的正则表达式:
$r = preg_replace('/\.NET CLR [\d\.]+/i', '', $ua);