¿Cómo sería una expresión regular que acepte un sólo cero al inicio de la cadena?

publicado por: Anonymous

Estoy validando un campo de Temperatura, el cual puede aceptar las siguientes cadenas:

-05, -2, -0, 0, 02, 5, 30

Tengo la siguiente expresión regular /-?[0-9]+(d+)/, el cual no puedo validar que al inicio sólo pueda tener un cero.

Es validación con Javascript, algunas cadenas que no puede tener son:

00, 003, -003, -00

La expresión regular necesito la necesito para validar un input de HTML usando ng-pattern de Angular.

Si existe otra herramienta que me recomienden es bienvenida.

solución

Deconstruyendo lo que se intenta tomar como válido, sería:

  • un signo negativo, opcional.
  • dos opciones:
    • un cero opcional, seguido de un dígito que no es cero (1 a 9), y luego cualquier cantidad de dígitos más.
    • un cero solamente, y se termina el string ahí.

Expresión regular:

/^-?(?:0?[1-9]d*|0)$/

Ejemplo utilizándolo con ng-pattern:

_x000D_

_x000D_

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>_x000D_
_x000D_
_x000D_
<body ng-app="">_x000D_
_x000D_
  <p>Enteros con máximo un cero a la izquierda:</p>_x000D_
_x000D_
  <form name="formulario">_x000D_
    <input name="entero" ng-model="entero" required ng-pattern="/^-?(?:0?[1-9]d*|0)$/">_x000D_
  </form>_x000D_
_x000D_
  <p>¿El número es válido?</p>_x000D_
  <h1>{{formulario.entero.$valid}}</h1>_x000D_
_x000D_
</body>

_x000D_

_x000D_

_x000D_

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *