domingo, 4 de febrero de 2018

Javascript Parte LXXXIV

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
<html>
<head>
</head>
<body>

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

</body>
</html>
Podemos analizar esta expresión regular:
  var 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.
<html>
<head>
</head>
<body>

<script type="text/javascript">
  var hora=prompt('ingrese una hora con el formato hh:mm:ss','');
  var 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:
  var 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)

No hay comentarios.:

Publicar un comentario