Hay otra pregunta, que trata de un decimal obligatorio, en este caso es opcional, y solo si hay decimales. Necesito verificar si un número es válido en una entrada numérica comparándolo con mi expresión regular al pegar y teclear. El número puede contener hasta 9 números, y si tiene un punto decimal, hasta 6 lugares decimales.
Por ejemplo:
123456789.123456
es un número válido, pero
1234567890.1234567
o
1234567890.
no es válido. Mi expresión regular hasta ahora es:
/^(\d{0,9})(\.{0,1}\d{0,6})*$/..pero todavía permite un lugar decimal sin decimales.
Usar
^\d{0,9}(?:\.\d{1,6})?$Ver prueba de expresiones regulares .
EXPLICACIÓN
-------------------------------------------------------------------------------- ^ the beginning of the string -------------------------------------------------------------------------------- \d{0,9} digits (0-9) (between 0 and 9 times (matching the most amount possible)) -------------------------------------------------------------------------------- (?: group, but do not capture (optional (matching the most amount possible)): -------------------------------------------------------------------------------- \. '.' -------------------------------------------------------------------------------- \d{1,6} digits (0-9) (between 1 and 6 times (matching the most amount possible)) -------------------------------------------------------------------------------- )? end of grouping -------------------------------------------------------------------------------- $ before an optional \n, and the end of the string