regex – PHP regular expression – filter number only-ThrowExceptions

Exception or error:

I know this might sound as really dummy question, but I’m trying to ensure that the provided string is of a number / decimal format to use it later on with PHP’s number_format() function.

How would I do it – say someone is typing 15:00 into the text field – what regular expression and php function should I use to remove the colon from it and make it only return the valid characters.

preg_match() returns array – so I can’t pass the result to number_format() unless I implode() it or something like this.

Your help would be very much appreciated.

How to solve:

Using is_numeric or intval is likely the best way to validate a number here, but to answer your question you could try using preg_replace instead. This example removes all non-numeric characters:

$output = preg_replace( '/[^0-9]/', '', $string );


To remove anything that is not a number:

$output = preg_replace('/[^0-9]/', '', $input);


  • [0-9] matches any number between 0 and 9 inclusively.
  • ^ negates a [] pattern.
  • So, [^0-9] matches anything that is not a number, and since we’re using preg_replace, they will be replaced by nothing '' (second argument of preg_replace).


You can try that one:

$string = preg_replace('/[^0-9]/', '', $string);



use built in php function is_numeric to check if the value is numeric.


You could do something like this if you want only whole numbers.

function make_whole($v){
    $v = floor($v);
      echo (int)$v;
      // if you want only positive whole numbers
      //echo (int)$v = abs($v);


Another way to get only the numbers in a regex string is as shown below:

$output = preg_replace("/\D+/", "", $input);

Leave a Reply

Your email address will not be published. Required fields are marked *