feed twitter facebook LinkedIn facebook

Java » Validar si un dato es numérico con Patrones en Java

marzo 31, 2009 por Víctor Cuervo 12 Comentarios Imprimir Imprimir

En el artículo Validar si un dato es numérico en Java veíamos como de una forma muy sencilla y mediante la transformación de cadenas en enteros podíamos validar si un dato es numérico en Java.

Si bien, ese ejemplo, válido para aprender a programar con Java, se nos quedaría corto para ejemplos reales.

Una buena forma, como han apuntado algunos de nuestros visitantes, es utilizar patrones sobre las cadenas de texto.

Lo primero que vamos a definir es el patrón que detecte que una cadena sea un número. Para ello indicaremos que la cadena tenga dígitos y que estos puedan aparecer N veces.

De esta manera nuestro patrón sería el siguiente:

[0-9]*

Otra forma de representar un dígito es \d. Por lo tanto nuestro patrón sería

\\d*

Hay que tener cuidado y escapar la barra invertida. Para ello la duplicamos la barra invertida.

Ahora deberemos ejecutar el patrón sobre la cadena. La gestión de patrones y expresiones regulares en Java se realiza mediante la librería java.util.regex y sus clases Matcher y Pattern. Aunque también tenemos el método .matches(), el cual se puede ejecutar sobre una String.

Esto último será lo que hagamos para ejecutar el patrón:

  1. String cadenaUno = "1234";
  2.  
  3. if (cadenaUno.matches("[0-9]*"))
  4. System.out.println("Es un número");
  5. else
  6. System.out.println("No es un número");

O con el otro patrón:

  1. String cadenaUno = "1234";
  2.  
  3. if (cadenaUno.matches("\\d*"))
  4. System.out.println("Es un número");
  5. else
  6. System.out.println("No es un número");

Podéis probar a cambiar el contenido del String para probar los diferentes comportamientos.

Descargar el Codigo
Descargar el código
Error en el Codigo
Error en el código
Foro sobre Java Util
Foro sobre Java Util
tags: , , , , , , , ,

Artículos relacionados:

12 comentarios »

RSS feed para los comentarios de esta entrada.TrackBack URI

1 2
  1. chuidiang
    abril 1, 2009 #

    Hola:

    En las expresiones regulares de java el \d es equivalente a [0-9], por lo que en el ejemplo también podría ponerse

    cadenaUno.matches(“\\d*”)

    La \ hay que “escaparla” poniéndola dos veces.

    Se bueno.

  2. lineadecodigo
    abril 1, 2009 #

    @chuidiang,

    Muy buena contribución… La he incluido en el artículo.

  3. marcos jvc
    abril 7, 2009 #

    mmm segun leo (segun dado que no he probado el codigo) una cadena vacia es tomada como un numero cosa que es incorrecta.

    Saludos

  4. chuidiang
    abril 11, 2009 #

    Hola:

    Si quires garantizar que al menos hay una cifra, en vez de asterisco, usa un +

    \\d+

    o bien

    [0-9]+

    El asterisco es 0 o más veces. El + es 1 o más veces.

    Se bueno.

  5. ChXt0
    abril 25, 2009 #

    Órale que interesante, no sabía que se podían utilizar las expresiones regulares en Java para esto.

    Todos los días se aprende algo nuevo, gracias a los dos.

    Saludos.

  6. kaedu
    febrero 14, 2010 #

    ^^ muchas gracias… muy buena la web ^^

  7. Movill
    febrero 22, 2010 #

    Buenas gente soy un novato en programacion en java pero de verdad le estoy poniendo empeño para aprender.. y esta web me ha ayudado mucho! Pero lo que no he logrado hasta ahora es que mi programa no explote por asi decirlo cuando no me introducen nada.. aqui les dejo el programa que hice que tiene una especie de validacion q si no es un numero primo se repite.. pero si me introducen letra o no me introducen nada explota! PUMP! jajaj aqui esta el codigo.. espero puedan ayudarme.. Gracias por todo les dejo mi email..

    henryandres.mp@gmail.com
    —————————————————————————————————-
    import javax.swing.*;

    public class numerosprimos {

    public static void main(String[] args) {
    // TODO code application logic here
    int suma, contador = 2, numero1, numero2;
    boolean primo=true;
    String vaci, recibir, recibirr2, recibirr3=”1234″;

    JOptionPane.showMessageDialog(null, “Este programa realiza una suma de 2 numeros primos que usted introduzca”);

    do{
    recibir=JOptionPane.showInputDialog(“Introduzca su primer numero”);
    numero1=Integer.parseInt(recibir);

    if(recibir.matches(“\\d+”)){
    JOptionPane.showMessageDialog(null, “No introdujo nada..”);
    }

    if(numero1 % contador ==0){
    JOptionPane.showMessageDialog(null, “Su primer numero es incorrecto.. Intente de nuevo pero con un numero primo”);

    }
    else{
    JOptionPane.showMessageDialog(null, “Numero correcto”);
    }

    }while(numero1 % contador==0 ) ;

    do{
    recibirr2=JOptionPane.showInputDialog(“Introduzca su segundo numero”);
    numero2=Integer.parseInt(recibirr2);
    if(numero2 % contador ==0){
    JOptionPane.showMessageDialog(null, “Su segundo numero es incorrecto.. Intente de nuevo pero con un numero primo”);
    }
    else{
    JOptionPane.showMessageDialog(null, “Numero correcto”);
    }

    }while(numero2 % contador==0 );

    suma=numero1 + numero2;

    System.out.print(suma);

    JOptionPane.showMessageDialog(null, “La suma de sus dos numeros primos es \n ” + suma);

    }

    }

  8. jesus
    agosto 27, 2011 #

    Gracias me sirvio ……

  9. diego
    junio 20, 2012 #

    buen tutorial,
    como haría si necesito solo números y dashes ( – ), guiones y tambien caracteres en blanco pero no letras? gracias! no importa la longitud

  10. RC XT
    agosto 4, 2013 #

    Me sirvio el post y es cierto de chuidiang de poner +

1 2

Deja un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*