RegEx 1
Ваше оригинальное выражение, кажется, найдено, мы просто немного изменим его на:
([{,])(\w+)(\s+)?:
, и оно может работать, мы добавляем левую границу:
([{,])
и правая граница:
:
, и наш ключевой атрибут находится в этой группе захвата:
(\w+)
RegEx 2
Мы можем расширить наше первое выражение до:
([{,])(\s+)?(\w+)(\s+)?:
в случае, если перед атрибутом ключа у нас могут быть пробелы:
Тест 1
$re = '/([{,])(\w+)(\s+)?:/m';
$x = '[{endTime:"2019-06-05T17:15:00.000+10:00",startTime:"2019-06-05T17:00:00.000+10:00"}]';
$subst = '$1"$2":';
$result = preg_replace($re, $subst, $x);
echo $result;
Тест 2
$re = '/([{,])(\s+)?(\w+)(\s+)?:/m';
$x = '[{endTime:"2019-06-05T17:15:00.000+10:00",startTime:"2019-06-05T17:00:00.000+10:00"}]';
$subst = '$1"$3":';
$result = preg_replace($re, $subst, $x);
echo $result;
Выход
[{"endTime":"2019-06-05T17:15:00.000+10:00","startTime":"2019-06-05T17:00:00.000+10:00"}]
RegEx Circuit
jex.im визуализирует регулярные выражения:
![enter image description here](https://i.stack.imgur.com/dmSPq.png)