Добавьте пробел до и после числа - PullRequest
2 голосов
/ 12 марта 2020

Я пытаюсь добавить пробел до и после любого числа в строке. Например, если у меня JS35BX54NV33, я получу JS 35 BX 54 NV 33

Я использую это:

preg_replace("/(\\d)([a-z])/i", "$1 $2", $mystring)

Но это только добавляет пробел ПОСЛЕ каждого числа.

Спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 12 марта 2020

Найдите позиции нулевой ширины, в которые вы будете sh вставлять пробелы, используя обходные пути. Группы захвата не требуются.

  • \d соответствует номеру c.
  • \D соответствует нечисловому c символу.
  • (?<=...) смотрит сзади.
  • (?=...) смотрит вперед.

Код: ( Демо )

$mystring = 'JS35BX54NV33';
var_export(preg_replace('/(?<=\D)(?=\d)|(?<=\d)(?=\D)/', ' ', $mystring));

Выход:

'JS 35 BX 54 NV 33'

var_export() используется для выявления отсутствия начальных или конечных пробелов.

0 голосов
/ 12 марта 2020

Просто попробуйте с,

<?php

$re = '/(\d+)/m';
$str = 'JS35BX54NV33';
$subst = ' $1 ';

$result = preg_replace($re, $subst, $str);

echo "The result of the substitution is ".$result;
?>

РАБОЧИЙ ДЕМО: https://3v4l.org/N6rSK.

REGEX https://regex101.com/r/buz2AA/1

...