Compruebe si una string determinada es un número válido (entero o punto flotante) en Java | SET 2 (enfoque de expresiones regulares)

En el Conjunto 1 , hemos discutido el enfoque general para verificar si una string es un número válido o no. En esta publicación, discutiremos el enfoque de expresiones regulares para verificar un número. 

Ejemplos:

Input : str = "11.5"
Output : true

Input : str = "abc"
Output : false

Input : str = "2e10"
Output : true

Input : 10e5.4
Output : false

Comprobar si una string dada es un entero válido

Para número entero: A continuación se muestra la definición regular de un número entero.

sign -> + | - | epsilon
digit -> 0 | 1 | .... | 9
num -> sign digit digit*

Por lo tanto, una de las expresiones regulares para un número entero es

[+-]?[0-9][0-9]*

Implementación:

Java

// Java program to check whether given string
// is a valid integer number using regex
 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
class GFG {
    public static void main(String[] args)
    {
        String input1 = "abc";
        String input2 = "1234";
 
        // regular expression for an integer number
        String regex = "[+-]?[0-9]+";
 
        // compiling regex
        Pattern p = Pattern.compile(regex);
 
        // Creates a matcher that will match input1 against
        // regex
        Matcher m = p.matcher(input1);
 
        // If match found and equal to input1
        if (m.find() && m.group().equals(input1))
            System.out.println(
                input1 + " is a valid integer number");
        else
            System.out.println(
                input1 + " is not a valid integer number");
 
        // Creates a matcher that will match input2 against
        // regex
        m = p.matcher(input2);
 
        // If match found and equal to input2
        if (m.find() && m.group().equals(input2))
            System.out.println(
                input2 + " is a valid integer number");
        else
            System.out.println(
                input2 + " is not a valid integer number");
    }
}
Producción

abc is not a valid integer number
1234 is a valid integer number

A continuación se muestran otras expresiones regulares abreviadas para un número entero

[+-]?[0-9]+
[+-]?\d\d*
[+-]?\d+

Comprobar si una string dada es un número de punto flotante válido

Para número de punto flotante: A continuación se muestra la definición normal de un número de punto flotante.

sign -> + | - | epsilon
digit -> 0 | 1 | .... | 9
digits -> digit digit*
optional_fraction -> . digits | epsilon
optional_exponent -> ((E | e) (+ | - | epsilon) digits) | epsilon
num -> sign digits optional_fraction optional_exponent

Por lo tanto, una de las expresiones regulares para un número flotante es

[+-]?[0-9]+(\.[0-9]+)?([Ee][+-]?[0-9]+)?

Implementación:

Java

//Java program to check whether given string
// is a valid floating point number using regex
 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
class GFG
{
    public static void main (String[] args)
    {
        String input1 = "10e5.4";
        String input2 = "2e10";
         
        // regular expression for a floating point number
        String regex = "[+-]?[0-9]+(\\.[0-9]+)?([Ee][+-]?[0-9]+)?";
         
        // compiling regex
        Pattern p = Pattern.compile(regex);
         
        // Creates a matcher that will match input1 against regex
        Matcher m = p.matcher(input1);
         
        // If match found and equal to input1
        if(m.find() && m.group().equals(input1))
            System.out.println(input1 + " is a valid float number");
        else
            System.out.println(input1 + " is not a valid float number");
         
        // Creates a matcher that will match input2 against regex
        m = p.matcher(input2);
         
        // If match found and equal to input2
        if(m.find() && m.group().equals(input2))
                System.out.println(input2 + " is a valid float number");   
        else
            System.out.println(input2 + " is not a valid float number");
    }
}
Producción

10e5.4 is not a valid float number
2e10 is a valid float number

A continuación se muestra otra expresión regular abreviada para un número flotante

[+-]?\d+(\.\d+)?([Ee][+-]?\d+)?

Artículo relacionado: compruebe si una string dada es un número válido (entero o punto flotante) en Java 

Este artículo es una contribución de Gaurav Miglani . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *