Listado completo de tutoriales

Expresiones regulares: agrupación en subpatrones ()


Los paréntesis abiertos y cerrados pueden tener varios significados en las expresiones regulares. El fundamental es el agrupar una parte de la expresión regular y aplicarle operaciones como |, *, +, ? etc.

Problema

Elaborar una expresión regular que permita validar si se ingresó correctamente un valor entero o real y que eventualmente lleve el caracter + o - al principio. Validar que si se ingresa la coma debe ingresarse la parte real

<!DOCTYPE html>
<html>

<head>
    <title>Ejemplo de JavaScript</title>
    <meta charset="UTF-8">
</head>

<body>

    <script>
        let nro = prompt('ingrese un número entero o real:');
        let patron = /^[+-]?\d+(\,\d+)?$/;
        if (patron.test(nro))
            alert('Correcto');
        else
            alert('Incorrecto');
    </script>

</body>

</html>

Podemos analizar esta expresión regular:

        let patron = /^[+-]?\d+(\,\d+)?$/;

Como la coma y la parte decimal son opcionales los encerramos entre paréntesis y lo finalizamos con el cuantificador '?'
Esto hace que cuando se ingresa la coma deba ingresarse uno o más dígitos obligatoriamente ya que los agrupamos mediante los paréntesis.

Problema

Ingresar una hora con el formato hh:mm:ss, plantear una expresión regular que valide si es correcta.

<!DOCTYPE html>
<html>

<head>
    <title>Ejemplo de JavaScript</title>
    <meta charset="UTF-8">
</head>

<body>

    <script>
        let hora = prompt('ingrese una hora con el formato hh:mm:ss');
        let patron = /^(0[1-9]|1\d|2[0-3]):([0-5]\d):([0-5]\d)$/;
        if (patron.test(hora))
            alert('Correcto');
        else
            alert('Incorrecto');
    </script>

</body>

</html>

Analicemos un poco como hemos agrupado cada uno de las secciones de la hora:

        let patron = /^(0[1-9]|1\d|2[0-3]):([0-5]\d):([0-5]\d)$/;

La parte inicial puede tomar un valor entre 0 y 23:

(0[1-9]|1\d|2[0-3])

Utilizamos el metacarácter | para permitir ingresar el cero seguido de un valor entre 1 y 9, o el valor 1 y cualquier dígito, o el dos seguido del dígito 0,1,2, o 3.

Luego debe ingresarse el caracter dos puntos.

La parte de los segundos queda definida por el patrón ([0-5]\d) es decir un valor entre 0 y 5 seguido de cualquier dígito.

Finalmente los segundos es similar a los minutos: ([0-5]\d)

Retornar