mira, lamentablemente con puro
regex no podemos asegurar que supere cierto numero entero, como el 100... tan solo un numero determinado de caracteres...
entonces, tu expresión seria algo así...
Código:
/^[0-9]{1,3}(\.[0-9]+)?%?$/
de este modo, obtenemos
de 1 a 3 números del 0 al 9... posiblemente seguidos de
punto y al menos un numero decimal... además de un
posible signo de porcentaje
no estoy seguro de su precisión, pero al menos... el error conocido seria que puede capturar.... 999.99999999999...N% (suerte)