2011-05-18 25 views

Respuesta

6

Esta expresión regular hará el trabajo (es decir, no más de 2 dígitos en ambos lados de la coma decimal)

^(?:\d{0,2}\.\d{1,2})$|^\d{1,2}$ 

explicación:

^    # Begining of the string 
    (?:   # begining of NON capture group 
    \d{0,2}  # matches 0,1 or 2 digits 
    \.   # decimal point 
    \d{1,2}  # 1 or 2 digits 
)    # end of non capture group 
$    # end of string 

|    # OR 

^    # Begining of the string 
    \d{1,2}  # 1 or 2 digits 
$    # end of string 

Esta expresión regular coincidirá: 2.5, 5, 0.2, .5 pero no: 123.456, 256

11

Esto debería funcionar.

(\d*\.?\d+) 

Significa

  • ( comienzan grupo de captura
  • \d* cualquier dígito cero o más veces
  • \.? un período cero o una vez (es decir, es opcional)
  • \d+ cualquier dígito uno o más veces
  • ) extremo grupo de captura

a las coincidencias en todos los números que enumeró y capturarlos en $1.

+1

Puede eliminar los paréntesis y usar '$ 0' para obtener el contenido del partido de la expresión regular completa. –

+0

Esto coincidirá con '123.456' pero el OP no desea más de 2 dígitos a cada lado del punto decimal. – Toto

+0

@Tim gracias por la sugerencia. Me olvidé de '$ 0' ya que suelo encontrar que, por lo general, solo quiero capturar una parte de regex. – Jeff

Cuestiones relacionadas