Php 更换所有的";。净清除率“;在用户代理中

Php 更换所有的";。净清除率“;在用户代理中,php,regex,Php,Regex,我正在学习regex,并在用户代理上测试一些字符串查找/替换 我有几个用户代理: .NET CLR 11432 .NET CLR 2.0.2648 .NET CLR 1.0.1369 .NET CLR 2.0.90283 我可以替换“.net clr\d”,但它不能正常工作 $ua = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 4.1; .NET CLR 12858)'; $r = preg_replace('/.NET CLR

我正在学习regex,并在用户代理上测试一些字符串查找/替换

我有几个用户代理:

  • .NET CLR 11432
  • .NET CLR 2.0.2648
  • .NET CLR 1.0.1369
  • .NET CLR 2.0.90283
我可以替换“.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)

很明显我错过了什么,但是什么


谢谢

使用
\d+
也可以转义圆点(
):

如果要删除数字(
0-9
)+点(
),则


您的正则表达式不符合版本号的小数点,这就是为什么它在
之前匹配所有内容。将您的正则表达式更改为:

$r = preg_replace('/\.NET CLR [\d\.]+/i', '', $ua);

您想只替换
.NET CLR
还是替换后面的号码?@AmitJoki也替换号码
$r = preg_replace('/\.NET CLR [\d.]+/i', '', $ua);
$r = preg_replace('/\.NET CLR [\d\.]+/i', '', $ua);