2011-06-06 5 views
7

muszę regex dopasować następujące:wartości liczbowe REGEX matcing z lub bez tysiąc separatorów

1.234.567 
-1.234.789 
1234567 
-1234567 

Nie powinna odpowiadać:

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

Innymi słowy, muszę regex, aby dopasować long wartości numeryczne sformatowane z separatorami tysięcznymi lub bez nich.

Dzięki!

+1

Czy tysiąc seperatora zawsze jest kropką. ? – Chandu

+0

Możesz to założyć. –

+0

brzmi trochę jak zadanie domowe –

Odpowiedz

9

Tutaj jest bardziej ograniczony odpowiedź

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

Zobacz go online here at Regexr

(?!0) zapobiega zaczynając od 0

\d+ pozwala numerów bez separatora

\d{1,3}(?:.\d{3})+ jest część do separatora. Zacznij od 1 do 3 cyfr, a następnie separatora i 3 liczb. Kropka do separatora, po której następuje 3 cyfry, można powtórzyć.

+0

Dzięki! +1 za podanie bardziej rozbudowanego opisu. –

+1

co powiesz na 0.2? – danidacar

2

Można zrobić coś takiego

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

RegExr Demo

+0

Dzięki! I +1 za link do wersji demonstracyjnej z przykładami. –

+0

@Olav @bazmegakapa czy wiesz, że pasuje to również do '0.0.0' oraz' 1.23.45' i '1.'? – stema

+0

@stema Jestem. W przypadku sprawdzania poprawności po stronie klienta wystarczy. Twój jest oczywiście lepszy, ale trochę przesadzony. – kapa

Powiązane problemy