Remove everything but numbers and minus sign PHP preg_replace

php, preg-replace, regex

Solution

try this :

preg_replace('/[^\d-]+/', '', $myvariable); 

breakdown of regex:

- `//` on both sides are regex delimiter - everything that is inside is regex

- `[]` means that this is character class. Rules change in character class

- `^` inside character class stands for "not".

- `\d` is short for [0-9], only difference is that it can be used both inside and outside of character class

- `-` will match minus sign

- `+` in the end is the quantifier, it means that this should match one or more characters

Problem

I've currently got ``` preg_replace('/[^0-9]/s', '', $myvariable); ``` For example the input is GB -3. My current line is giving me the value 3. I want to be able to keep the minus so that the value shows -3 instead of the current output of 3.

Original source