Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

193
Views
El límite de 10 caracteres son números y solo 1 punto

Tengo un problema de expresiones regulares al ingresar. Ese es el requisito: limite 10 caracteres (números), incluidos los puntos, y solo se permite 1 punto. Mi código actual tiene solo 10 caracteres antes y después del punto.

 ^[0-9]{1,10}\.?[0-9]{0,10}$

gracias por el apoyo

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

El punto decimal lanza una llave en la mayoría de los enfoques de patrón único. Probablemente usaría una alternancia aquí:

 ^(?:\d{1,10}|(?=\d*\.)(?!\d*\.\d*\.)[0-9.]{2,11})$

Este patrón dice que coincida:

 ^ from the start of the number (?: \d{1,10} a pure 1 to 10 digit integer | OR (?=\d*\.) assert that one dot is present (?!\d*\.\d*\.) assert that ONLY one dot is present [0-9.]{2,11} match a 1 to 10 digit float ) $ end of the number
about 4 years ago · Juan Pablo Isaza Report

0

Puede usar una anticipación para lograr sus objetivos.

Primero, mirando su expresión regular, ha usado [0-9] para representar todos los caracteres de dígitos. Podemos acortar esto a \d , lo que significa lo mismo.

Entonces, podemos centrarnos en el requisito de que solo haya un punto. Podemos probar esto con el siguiente patrón:

 ^\d*\.?\d*$
  • \d* significa cualquier número de dígitos
  • \.? coincide con un punto literal, opcionalmente
  • \d* coincide con cualquier número de dígitos después del punto
  • $ ancla esto al final de la cadena, por lo que la coincidencia no puede terminar antes del segundo punto, en realidad tiene que fallar si hay un segundo punto

Ahora, en realidad no queremos consumir todos los personajes involucrados en esta coincidencia, porque entonces no podríamos asegurarnos de que haya <= 10 caracteres. Aquí es donde entra en juego la búsqueda anticipada: podemos usar la búsqueda anticipada para asegurarnos de que nuestro patrón anterior coincida, pero en realidad no realice la coincidencia. De esta manera, verificamos que solo hay un punto, pero en realidad aún no hemos consumido ninguno de los caracteres de entrada. Un lookahead se vería así:

 ^(?=\d*\.?\d*$)

A continuación, podemos asegurarnos de que no haya más de 10 caracteres en total. Como ya nos aseguramos de que solo haya puntos y dígitos con el patrón anterior, podemos hacer coincidir hasta 10 de cualquier carácter para simplificar, así:

 ^.{1,10}$

Poniendo estos dos patrones juntos, obtenemos esto:

 ^(?=\d*\.?\d*$).{1,10}$

Esto solo coincidirá con entradas de números que tengan 10 o menos caracteres y no tengan más de un punto.

Si desea asegurarse de que, cuando hay un punto, también hay un dígito que lo acompaña, podemos lograrlo agregando otra anticipación. El único caso que cumple esta condición es cuando la cadena de entrada es solo un punto ( . ), por lo que podemos descartar explícitamente este caso con una anticipación negativa como esta:

 (?!\.$)

Agregando esto nuevamente a nuestra expresión principal, obtenemos:

 ^(?=\d*\.?\d*$)(?!\.$).{1,10}$
about 4 years ago · Juan Pablo Isaza Report

0

Podría afirmar que 10 caracteres en la cadena son . o un dígito.

Luego puede hacer coincidir dígitos opcionales y, opcionalmente, hacer coincidir un punto y nuevamente dígitos opcionales:

 ^(?=[.\d]{10}$)\d*(?:\.\d*)?$

El patrón coincide:

  • ^ Comienzo de cadena
  • (?=[.\d]{10}$) Búsqueda anticipada positiva, afirmación de 10 caracteres . o dígito hasta el final de la cadena
  • \d* Coincidir con dígitos opcionales
  • (?:\.\d*)? Opcionalmente, haga coincidir un `. y dígitos opcionales
  • $ Fin de la cadena

Vea una demostración de expresiones regulares .

Si el patrón no debe terminar en un punto:

 ^(?=[.\d]{10}$)\d*(?:\.\d+)?$

Demostración de expresiones regulares

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!