You shouldn't have to do regex to solve this. Take the following test for example:
$input = ["wholesale_price" => 0.005];
$rules = ["wholesale_price" => "numeric|between:0.001,99.99"];
As long as your require the numeric rule, then between will treat the value being validated as a number (int, float, double, etc.) As long as your don't pass a string value such as $0.001, or strip any unwanted characters prior to validation, this method will return true for anything above 0 and the max value you set (currently 99.99, but you can set it as high as you'd like.)
Here's a simple testing template:
$input = [
"price" => 0
];
$input2 = [
"price" => 0.001
];
$rules = [
"price" => "numeric|between:0.001,99.99",
];
$validator = \Validator::make($input, $rules);
$validator2 = \Validator::make($input2, $rules);
dd($validator->passes());
// Returns false;
dd($validator2->passes());
// Returns true;
Note: Also works if price is a string value, just strip the $ if you're sending that to the server.
Hope that helps!