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}$