如果不是数字之间删除冒号

时间:2015-10-12 12:11:27

标签: php regex preg-replace

$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 个答案:

答案 0 :(得分:4)

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

1)从xxx:'开始   2)以'

结尾

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

$str = "xxx:'2015-10-09 15:05'";
var_dump( preg_replace("/^xxx:'([^']*)'$/", '$1', $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个或多个字符。