регулярное выражение для учета периодов после числового символа только в php

У меня есть следующий код

<?php $str="$str="115(JOHN DOE.) 900,000.00 SALARY. 45 AGE. "; $str=preg_replace("/[a-zA-Z(),]/", "", $str); echo $str=preg_replace('!\s+!', ',', $str); ?> 

Этот выход

 115,.,900000.00.,45., 

но это не совсем то, что мне нужно, мне нужно рассмотреть период, который находится в 900 000,00, и игнорировать то, что ДЖОН ДЕ. , SALARY., ВОЗРАСТ.

Как я могу это сделать?

 115,900000.00,45 

Т.е. мне нужно регулярное выражение для рассмотрения периодов после числового символа

Не пытаясь улучшить код … это должно сделать это:

 $str="115(JOHN DOE.) 900,000.00(SALARY.) 45(AGE.)"; $str=preg_replace("/[a-zA-Z]+\.+/", "", $str); $str=preg_replace("/[a-zA-Z(),]/", "", $str); echo $str=preg_replace('!\s+!', ',', $str); 

Я сделал это в три этапа:

 $a = "115(JOHN DOE.) 900,000.00(SALARY.)"; $a = preg_replace("/\([AZ ]*\.\)/", "", $a); // 115 900,000.00 $b = preg_replace("/,/", "", $a); // 115 900000.00 $c = preg_replace("/\s+/", ",", $b); // 115,900000.00 

Вы можете изменить эту строку:

 $a = preg_replace("/\([AZ ]*\.\)/", "", $a); 

с этим:

 $a = preg_replace("/[AZ ]*\./", "", $a); 

для удаления данных без круглых скобок.

 $str = '115(JOHN DOE.) 900,000.00 SALARY. 45 AGE. '; preg_match_all("/\d+(?:(?:[,.]\d+)+)?/", $str, $match); $match = array_map(function($val) { return str_replace(",", "", $val); }, $match[0]); echo implode(",", $match); 

Выход :

 115,900000.00,45