如果不在数字之间,则删除冒号

Remove colon if not between digits

$str = "xxx:'2015-10-09 15:05'";

$patterns[0] = '/:/';
$patterns[1] = '/\'/';
$patterns[2] = '/xxx/';

var_dump( preg_replace($patterns, '', $str) );

这输出:string(15) "2015-10-09 1505"

但我需要字符串(16) "2015-10-09 15:05"

如果您知道您的输入字符串是:

1) 以xxx:'
开头 2) 以 '

结尾

并且您需要撇号之间的所有内容,您可以将 preg_replace/^xxx:'([^']*)'$/ 正则表达式一起使用:

$str = "xxx:'2015-10-09 15:05'";
var_dump( preg_replace("/^xxx:'([^']*)'$/", '', $str) );

IDEONE demo

输出:string(16) "2015-10-09 15:05".

或者作为替代,使用 matching regex:

$str = "xxx:'2015-10-09 15:05'";
if (preg_match("/(?<=')[^']+/", $str, $m)) { 
 var_dump( $m );
}

此处,(?<=')[^']+ 将在一个撇号 ((?<=')) 之后匹配除单个撇号 ([^']+) 之外的 1 个或多个字符。