Найдите позиции нулевой ширины, в которые вы будете sh вставлять пробелы, используя обходные пути. Группы захвата не требуются.
\d
соответствует номеру c. \D
соответствует нечисловому c символу. (?<=...)
смотрит сзади. (?=...)
смотрит вперед.
Код: ( Демо )
$mystring = 'JS35BX54NV33';
var_export(preg_replace('/(?<=\D)(?=\d)|(?<=\d)(?=\D)/', ' ', $mystring));
Выход:
'JS 35 BX 54 NV 33'
var_export()
используется для выявления отсутствия начальных или конечных пробелов.