Вы должны решить, хотите ли вы принимать числа без начальных нулей (например, 123). Если нет, то регулярное выражение легко:
^-?[0-9]+(\.[0-9]+)?$
Если вы это сделаете, то это немного сложнее:
^-?(?:[0-9]+|[0-9]*\.[0-9]+)$
Оба предполагают, что за десятичной точкой должна следовать хотя бы одна цифра. Если вы не принимаете отрицательные числа, то в начале -?
нет необходимости.