trato de capturar una entrada de un campo a través de javascript.
Necesito obtener un máximo de 3 números y un punto.
Probé esta expresión regular: [^\d{0,3}.{0,1}\d{0,3}]
pero no funciona del todo, realmente no puedo entender cómo obtener los valores numéricos globalmente, por lo que en realidad es un máximo de 3 números.
333 //ok 333 //ok 33.1 //ok 3.33 //ok 3.3. //not ok 3.333 //not ok 3333. //not ok 3.. //not ok . //not okEspero que alguien pueda darme una pista aquí.
Para la validación en el envío (final) , puede usar
^(?=.{3,4}$)\d+(?:\.\d+)?$Vea la demostración de expresiones regulares . Concuerda
^ - comienzo de la cadena(?=.{3,4}$) - esto requiere que la cadena tenga solo tres o cuatro caracteres\d+(?:\.\d+)? - uno o más dígitos, y luego una aparición opcional de un . y uno o más dígitos. Como \d , \. y \d son obligatorios para coincidir al menos una vez, el límite mínimo como 3 está justificado y dado que solo se puede hacer coincidir un punto, cualquiera de \d+ puede coincidir con uno o dos dígitos, pero solo tres en total$ - final de la cadena.Para la validación de texto de entrada en vivo , puede usar
^(?:\d{1,3}|\d(?:\d?\.\d?|\.\d{2}))$Vea la demostración de expresiones regulares . Detalles :
^ - comienzo de la cadena(?: - comienzo de un grupo:\d{1,3} - uno, dos o tres dígitos| - o\d - un dígito(?:\d?\.\d?|\.\d{2}) - un grupo que no captura que coincide con\d?\.\d? - un dígito opcional, un . y luego un dígito opcional| - o\.\d{2} - . y luego dos digitos) - final del grupo$ - final de la cadena.Soy muy malo en expresiones regulares, pero se me ocurrió algo como esto a continuación. Probablemente haya una forma mucho más elegante pero....
^\d{0,3}$|^\d{2}[.]\d{1}$|^\d{1}[.]\d{1,2}$Funciona para números MAX 3, por lo que 3 y 33 también están bien
También puede hacer coincidir las 3 variaciones en un grupo sin captura:
^(?:\d{3}|\d\.\d\d|\d\d\.\d)$Demostración de expresiones regulares
O primero haga coincidir un solo dígito seguido de 2 variaciones de un punto opcional y 2 dígitos o un solo dígito, punto opcional y un solo dígito:
^\d(?:\.?\d\d|\d\.?\d)$