2011-06-06 16 views
7

Tôi cần một RegEx để phù hợp với những điều sau đây:RegEx matcing giá trị số có hoặc không có ngàn tách

1.234.567 
-1.234.789 
1234567 
-1234567 

Nó không phải phù hợp:

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

Nói cách khác, tôi cần một RegEx để phù hợp với long giá trị số được định dạng có hoặc không có nghìn dấu tách.

Cảm ơn!

+1

Là nghìn seperator luôn là dấu chấm. ? – Chandu

+0

Bạn có thể giả định điều đó. –

+0

nghe có vẻ hơi giống bài tập về nhà –

Trả lời

9

Dưới đây là một câu trả lời hạn chế hơn

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

Xem nó trực tuyến here at Regexr

(?!0) ngăn chặn từ bắt đầu với 0

\d+ cho phép những con số mà không cần tách

\d{1,3}(?:.\d{3})+ là phần cho các dấu phân cách. Bắt đầu với 1 đến 3 số, sau đó là dấu tách và 3 số. Dấu chấm cho dấu phân cách theo sau bởi 3 số có thể được lặp lại.

+0

Cảm ơn! 1 để đưa ra một mô tả phức tạp hơn. –

+1

khoảng 0,2? – danidacar

2

Bạn có thể làm một cái gì đó giống như

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

RegExr Demo

+0

Cảm ơn! Và +1 cho liên kết để giới thiệu với các ví dụ. –

+0

@Olav @bazmegakapa bạn có biết rằng điều này cũng phù hợp với '0.0.0'and' 1.23.45' và '1.'? – stema

+0

@stema I am. Đối với xác nhận phía máy khách, nó đủ. Yours là đẹp hơn tất nhiên, nhưng một chút overkill cho tôi. – kapa

Các vấn đề liên quan