Que hay men.. te dejo este code que acabo de hacer (que están en C#, ya que no especificaste algún lenguaje en específico y se me hace mucho más cómodo trabajar en éste):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleEjemplo
{
class Program
{
static void Main(string[] args)
{
while (true) //Bucle infinito
{
int conteo = 0;
string cadena = Console.ReadLine();
if (String.IsNullOrEmpty(cadena))
{
Console.WriteLine("Por favor, escribe solo numeros.");
conteo += 1;
}
char[] cadena2 = cadena.ToCharArray();
for (int i = 0; i < cadena2.Length; i++)
{
if (!(Char.IsDigit(cadena[i])))
{
conteo += 1;
}
}
if (conteo == 0)
{
Console.WriteLine("Correcto.");
break;
}
else
{
Console.WriteLine("Por favor, escribe solo numeros.");
}
}
}
}
}
Funciona a la perfección de que sólo acepta números (incluyendo los operadores de números y paréntesis, puntos, corcheas, etc).