fork download
  1. <?php
  2.  
  3. $inputs = array(
  4. '2', // no match
  5. '29.2', // no match
  6. '2.48',
  7. '8.06.16', // no match
  8. '-2.41',
  9. '-.54', // no match
  10. '4.492', // no match
  11. '4.194,32',
  12. '39,299.39',
  13. '329.382,39',
  14. '-188.392,49',
  15. '293.392,193', // no match
  16. '-.492.183,33', // no match
  17. '3.492.249,11',
  18. '29.439.834,13',
  19. '-392.492.492,43'
  20. );
  21.  
  22. $number_pattern = '-?(?<![\d.,])\d{1,3}(?:[,.]\d{3})*[.,]\d{2}(?![\d.])';
  23.  
  24. foreach($inputs as $input){
  25. preg_match_all('/'.$number_pattern.'/', $input, $matches);
  26. print_r($matches);
  27. }
Success #stdin #stdout 0.02s 52432KB
stdin
Standard input is empty
stdout
Array
(
    [0] => Array
        (
        )

)
Array
(
    [0] => Array
        (
        )

)
Array
(
    [0] => Array
        (
            [0] => 2.48
        )

)
Array
(
    [0] => Array
        (
        )

)
Array
(
    [0] => Array
        (
            [0] => -2.41
        )

)
Array
(
    [0] => Array
        (
        )

)
Array
(
    [0] => Array
        (
        )

)
Array
(
    [0] => Array
        (
            [0] => 4.194,32
        )

)
Array
(
    [0] => Array
        (
            [0] => 39,299.39
        )

)
Array
(
    [0] => Array
        (
            [0] => 329.382,39
        )

)
Array
(
    [0] => Array
        (
            [0] => -188.392,49
        )

)
Array
(
    [0] => Array
        (
        )

)
Array
(
    [0] => Array
        (
        )

)
Array
(
    [0] => Array
        (
            [0] => 3.492.249,11
        )

)
Array
(
    [0] => Array
        (
            [0] => 29.439.834,13
        )

)
Array
(
    [0] => Array
        (
            [0] => -392.492.492,43
        )

)