tester regular online creator regex

regular - regex tester



Regex para coincidir con 2 dígitos, decimal opcional, dos dígitos (9)

He pasado media hora tratando de conseguir esto, tal vez alguien pueda llegar rápidamente.

Necesito una expresión regular que coincida con uno o dos dígitos, seguido de un punto decmial opcional, seguido de uno o dos dígitos.

Por ejemplo, debe coincidir con estas cadenas en su totalidad:

3
33
.3
.33
33.3
33.33

y NO haga coincidir nada con más de 2 dígitos antes o después del punto decmial.


¿Mencionó que desea que la expresión regular coincida con cada una de esas cadenas, pero mencionó previamente que hay 1-2 dígitos antes del decimal?

Esto coincidirá con 1-2 dígitos seguidos de un posible decimal, seguido de otros 1-2 dígitos pero FALLO en su ejemplo de .33

/d{1,2}/.?/d{1,2}

Esto coincidirá con 0-2 dígitos seguidos de un posible deciaml, seguido de otros 1-2 dígitos y coincidirá en su ejemplo de .33

/d{0,2}/.?/d{1,2}

No estoy seguro exactamente cuál estás buscando.


A continuación se muestra una expresión regular muy buena para dos dígitos y dos puntos decimales.

[RegularExpression(@"/d{0,2}(/./d{1,2})?", ErrorMessage = "{0} must be a Decimal Number.")]


Para basarse en la respuesta de Lee, necesita anclar la expresión para satisfacer el requisito de no tener más de 2 números antes del decimal.

Si cada número es una cadena separada, puede usar los anclajes de cadena :

^/d{0,2}(/./d{1,2})?$

Si cada número está dentro de una cadena, puede usar los anclajes de palabras :

/b/d{0,2}(/./d{1,2})?/b


Prueba esto

/d{1,2}/.?(/./d{1,2})?


Una respuesta anterior es correcta en su mayoría, pero también coincidirá con la cadena vacía. Lo siguiente resolvería esto.

^([0-9]?[0-9](/.[0-9][0-9]?)?)|([0-9]?[0-9]?(/.[0-9][0-9]?))$


EDIT: Cambiado para adaptarse a otros comentarios.

Entendí que significa que si no hay un punto decimal, entonces no debería haber dos dígitos más. Así que esto debería ser:

/d{0,2}(/./d{1,2})?

Eso debería hacer el truco en la mayoría de las implementaciones. Si no, puedes usar:

[0-9]?[0-9]?(/.[0-9][0-9]?)?

Y eso debería funcionar en cada implementación que haya visto.


(?<![/d.])(/d{1,2}|/d{0,2}/./d{1,2})?(?![/d.])

Partidos:

  • Tus ejemplos
  • 33.

No coincide:

  • 333.33
  • 33.333

^(/d{0,2}//.)?/d{1,2}$

/d{1,2}$ coincide con un número de 1 a 2 dígitos y nada después ( 3 , 33 , etc.), (/d{0,2}/.)? coincide opcionalmente con un número de 0 a 2 dígitos seguidos de un punto ( 3. , 44. . , . , etc.). Póngalos juntos y usted tiene su expresión regular.


^/d{0,2}/.?/d{1,2}$