<?php

$inputs = array(
    '2', // no match
    '29.2', // no match
    '2.48',
    '8.06.16', // no match
    '-2.41',
    '-.54', // no match
    '4.492', // no match
    '4.194,32',
    '39,299.39',
    '329.382,39',
    '-188.392,49',
    '293.392,193', // no match
    '-.492.183,33', // no match
    '3.492.249,11',
    '29.439.834,13',
    '-392.492.492,43'
);

$number_pattern = '-?(?<![\d.,])\d{1,3}(?:[,.]\d{3})*[.,]\d{2}(?![\d.])';

foreach($inputs as $input){
    preg_match_all('/'.$number_pattern.'/', $input, $matches);
    print_r($matches);
}