2011-06-06 16 views
7

que necesitan una expresión regular para que coincida con lo siguiente:valores numéricos RegEx matcing con o sin separadores de miles

1.234.567 
-1.234.789 
1234567 
-1234567 

No debe coincidir:

.123  (leading separator) 
123..456 (two separators) 

En otras palabras, necesito una expresión regular para que coincida long valores numéricos formateados con o sin separadores de miles.

Gracias!

+1

Es el separador de mil siempre un punto. ? – Chandu

+0

Puede suponer eso. –

+0

suena un poco como tarea –

Respuesta

9

que aquí hay una respuesta más restringido

^-?(?!0)(?:\d+|\d{1,3}(?:\.\d{3})+)$ 

verlo en línea here at Regexr

(?!0) impide empezando por 0

\d+ permite que los números sin separador

\d{1,3}(?:.\d{3})+ es la parte por el separador. Comience con 1 a 3 números, luego un separador y 3 números. El punto para el separador seguido de 3 números se puede repetir.

+0

¡Gracias! +1 para dar una descripción más elaborada. –

+1

¿qué hay de 0.2? – danidacar

2

Se podría hacer algo como

^-?([0-9]{1,3}\.?)+$ 

RegExr Demo

+0

Gracias! Y un +1 para vincular a la demostración con ejemplos. –

+0

@Olav @bazmegakapa ¿sabe usted que esto también coincide con '0.0.0' y' 1.23.45' y '1.'? – stema

+0

@stema Yo soy. Para la validación del lado del cliente, es suficiente. La tuya es más agradable, por supuesto, pero un poco exagerada para mí. – kapa

Cuestiones relacionadas