Как я могу регулярное выражение этого? - PullRequest
0 голосов
/ 29 ноября 2018

С помощью какого регулярного выражения я могу обрабатывать строки вроде

2.3.5...9 
4...
...

до

2.3.5.0.0.9
4.0.0.0
0.0.0.0

Я пробовал preg_replace('/\.([^0-9])/', '.0', $mystring), но не повезло, спасибо!

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Вы можете использовать preg_replace('/^(?=\.)|(?<=\.)(?=\.|$)/', '0', $mystring)

Это охватывает случаи

  • начала строки, за которым следует точка
  • две точки
  • точкас последующим концом строки
0 голосов
/ 29 ноября 2018

Если входная строка является строкой, подобной IPv4 (с ot без цифр), то сделайте следующее:

echo preg_replace('~\B~', '0', '...'); // 0.0.0.0

См. живое демо здесь

0 голосов
/ 29 ноября 2018

Ваш текущий подход близок, но чтобы заставить его работать, мы можем попробовать использовать обходные пути.Замените:

(?<=^|\.)(?=\.|$)

на 0.

$mystring = "2.3.5...9";
$output = preg_replace('/(?<=^|\.)(?=\.|$)/', '0', $mystring);
echo $output;

Вот краткое объяснение логики регулярных выражений:

(?<=^|\.)    position is preceded by either the start of the string, or another dot
(?=\.|$)     position is followed by either the end of the string, or another dot
...