Как насчет этого:
([+-]?\d[+-]?)+
, что означает «одну или несколько цифр, каждой из которых может предшествовать или следовать необязательный плюс или минус».
Вот тестовый скрипт Python:
import re
TESTS = "234654 24-3+-2 -234 25485+ ++--+".split()
for test in TESTS:
print test, ":", re.match(r'([+-]?\d[+-]?)+', test) is not None
который печатает это:
234654 : True
24-3+-2 : True
-234 : True
25485+ : True
++--+ : False