In the pattern you tried the second character class is not matching a digit and the hyphen should be escaped or placed at the beginning/end.
You could use a single character class instead. If you change the delimiter to other than / like ~ you don't have to escape the forward slash.
[-*\/+\d]+
Regex demo | Php demo
For example
$strings = [
    "quanity*price/2+tax",
    "quanity*price/2"
];
foreach ($strings as $string) {
    $keywords = preg_split("~[-*/+\d]+~", $string,  -1, PREG_SPLIT_NO_EMPTY);
    print_r($keywords);
}
Output
Array
(
    [0] => quanity
    [1] => price
    [2] => tax
)
Array
(
    [0] => quanity
    [1] => price
)
If you also want to match 0+ preceding whitespace chars, comma's:
[\s,]*[-*/+\d]+
Regex demo
     
    
[-*\/+\d]+regex101.com/r/3NEEfc/1 You could move the-to the beginning/end of the character class or escape it\-