Узор
[-?|+?]
будет соответствовать ровно одному -
, +
, |
или ?
. То, что вы хотите, это
[-+]?
, который будет соответствовать -
или +
один или ноль раз.
Это также позволит проходить числа типа '123'. Если вам требуется знак +, используйте это:
/0|[-+][1-9]\d*/