Foros del Web » Programando para Internet » Javascript »

Expresione Regular para hacer un campo que solo admita numeros decimales

Estas en el tema de Expresione Regular para hacer un campo que solo admita numeros decimales en el foro de Javascript en Foros del Web. Hola quiero hacer un campo que solo admita numeros decimales, el simbolo para el decimal es el punto. Utilizo esta funcion que vi en el ...
  #1 (permalink)  
Antiguo 13/03/2006, 17:18
Avatar de Callaghan  
Fecha de Ingreso: enero-2006
Mensajes: 58
Antigüedad: 18 años, 10 meses
Puntos: 1
Expresione Regular para hacer un campo que solo admita numeros decimales

Hola quiero hacer un campo que solo admita numeros decimales, el simbolo para el decimal es el punto.

Utilizo esta funcion que vi en el faq y que luego alguien del foro me ayudo a modificar.
Código PHP:
function validardec(e) { 
    
tecla = (document.all) ? e.keyCode e.which
    if (
tecla==8) return true//Tecla de retroceso (para poder borrar) 

    
patron = /[d.]/;// Solo acepta números y el punto
    
    
te String.fromCharCode(tecla); 
    return 
patron.test(te);  

Sin embargo el usuario podria teclear varios puntos con esa funcion, por ejemplo podria meter 1.2.2 o 12.., etc.
¿Como se puede modificar para que solo admita un punto?
Se que el simbolo (?) significa "cero o una vez" pero lo he intentado de varias maneras y no me lo coge.

Tambien me gustaria, si se pudiera hacer, que solo admitiera dos cifras antes del punto, para que asi no pudiera escribir cifras mayores de 99. Osea que se pudieran escribir dos cifras como maximo antes y despues del punto.

Por ultimo me gustaria tambien saber como se coge el primer elemento de una cadena. Lo quiero para que si el usuario mete una cifra del tipo (.99), la funcion javascript me la transforme a (0.99).

Gracias.
  #2 (permalink)  
Antiguo 14/03/2006, 08:32
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 3 meses
Puntos: 39
Deberia funcionar asi:
Código:
patron = /(\d{,2})\.?(\d{,2})/;
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 14/03/2006, 10:20
Avatar de Callaghan  
Fecha de Ingreso: enero-2006
Mensajes: 58
Antigüedad: 18 años, 10 meses
Puntos: 1
No me funciona.... no me deja escribir nada en el textbox....

¿podria ser por que lo llamo mediante el evento onkeypress?

</head>

<body>
<input type="text" name="textfield" onkeypress="return validar(event)">
</body>
</html>
  #4 (permalink)  
Antiguo 16/03/2006, 12:26
Avatar de Callaghan  
Fecha de Ingreso: enero-2006
Mensajes: 58
Antigüedad: 18 años, 10 meses
Puntos: 1
Help!!!

Lo que quiero es que mientras se va escribiendo solo se permitan 2 numeros y si se pone un punto (y solo uno) tras el punto se puedan escribir otros 2
  #5 (permalink)  
Antiguo 18/03/2006, 07:52
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 3 meses
Puntos: 39
Este script de tunait es algo parecido: Colocar separadores de miles mientras se escribe.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #6 (permalink)  
Antiguo 18/03/2006, 09:41
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 11 meses
Puntos: 1
interesante ejercicio

Me gustó tu ejercicio y lo resolví.

Nada más que el estilo de la expresión regular es más bien al estilo PHP, porque el que he visto por aquí casi no lo manejo.

Pero funciona, chécala, =)

Código PHP:
//
//

<html><head><title>Expresiones Regulares</title></head>
<
body>

<
script>
    
//VARIABLE GLOBAL
    
var textoAnterior '';

    
//ESTA FUNCIÓN DEFINE LAS REGLAS DEL JUEGO
    
function cumpleReglas(simpleTexto)
        {
            
//la pasamos por una poderosa expresión regular
            
var expresion = new RegExp("^(|([0-9]{1,2}(\\.([0-9]{1,2})?)?))$");

            
//si pasa la prueba, es válida
            
if(expresion.test(simpleTexto))
                return 
true;
            return 
false;
        }
//end function checaReglas

    //ESTA FUNCIÓN REVISA QUE TODO LO QUE SE ESCRIBA ESTÉ EN ORDEN
    
function revisaCadena(textItem)
        {
            
//si comienza con un punto, le agregamos un cero
            
if(textItem.value.substring(0,1) == '.'
                
textItem.value '0' textItem.value;

            
//si no cumples las reglas, no te dejo escribir
            
if(!cumpleReglas(textItem.value))
                
textItem.value textoAnterior;
            else 
//todo en orden
                
textoAnterior textItem.value;
        }
//end function revisaCadena
</script>

<form action="#">
    <input type="text" onKeyUp="revisaCadena(this)">
</form>
</body></html> 
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #7 (permalink)  
Antiguo 18/03/2006, 09:45
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 11 meses
Puntos: 1
Otra versión que se me ocurre es que alguna interrupción capture las teclas y luego se haga la validación. Si es correcta, que se imprima en el campo de texto, de lo contrario que no lo haga.

La diferencia está en que este script que puse aquí sí te deja escribir, pero se borra inmediatamente si no cumple las reglas del juego.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #8 (permalink)  
Antiguo 20/03/2013, 09:20
Avatar de perumultimedia  
Fecha de Ingreso: marzo-2013
Mensajes: 1
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Expresione Regular para hacer un campo que solo admita numeros decimales

Al fin una solución coherente y que se adapta al browser de un smartphone.
Gracias UAMISTAD por la respuesta
Gracia GALLAGHAN por formular bien la pregunta...
  #9 (permalink)  
Antiguo 20/03/2013, 15:41
Avatar de cesarin3134  
Fecha de Ingreso: enero-2012
Ubicación: Milan
Mensajes: 97
Antigüedad: 12 años, 10 meses
Puntos: 20
Respuesta: Expresione Regular para hacer un campo que solo admita numeros decimales

prueba esta :
Código Javascript:
Ver original
  1. [0-9]+(\.[0-9][0-9]?)?
__________________
Web Graphic and Front-End Developer C.andavisa
http://www.cesart.it
  #10 (permalink)  
Antiguo 20/03/2013, 15:43
Avatar de cesarin3134  
Fecha de Ingreso: enero-2012
Ubicación: Milan
Mensajes: 97
Antigüedad: 12 años, 10 meses
Puntos: 20
Respuesta: Expresione Regular para hacer un campo que solo admita numeros decimales

o esta !!

Código Javascript:
Ver original
  1. ^[0-9]+(\.([0-9]{1,2})?)?$
__________________
Web Graphic and Front-End Developer C.andavisa
http://www.cesart.it
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 01:35.