2013-07-15 6 views
0

Как проверить с помощью регулярного выражения на Java, если число разделено тысячами (например, с точкой)?Регулярное выражение для тысяч разделенных чисел

Конечно, он не должен принимать отрицательное число. Я уже Googled вокруг, и пока лучшее, что я нашел, было [1-9]?\.[0-9]*. Однако это не идеально. Например, он принимает 1.000000000, что неверно.

Как я могу проверить положительное число с разделителем dot тысяч? Например, номер: 1.024.553 или 100.000

Он должен принять:

  • 123
  • 123.123
  • 0
  • 12.111

Но нет:

  • 00
  • kukac
  • 0.111
  • 1...1
  • 1.1
+1

Каковы тестовые примеры? (Список входов и ожидаемых выходов.) – acdcjunior

+0

Это вход, и я хочу проверить, разделена ли эта тысяча. – Slenkra

+0

Лицо, голосовавшее по этому вопросу, может объяснить почему? – Slenkra

ответ

2

Вы можете использовать этот шаблон:

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

Это будет соответствовать любой простой последовательности цифр без разделителей тысяч или любой последовательности с разделителями . между каждые 3 цифры. Если вы хотите поддержать запятую в качестве разделителя тысяч, используйте:

^\d+|\d{1,3}(?:[,.]\d{3})*$ 

Конечно, использовать любого из них в Java, вам нужно, чтобы избежать \ символов:

String pattern = "^\\d+|\\d{1,3}(?:\\.\\d{3})*$"; 

Update Учитывая обновленные спецификации, я бы рекомендовал эту модель:

^(?:0|[1-9][0-9]{0,2}(?:\.[0-9]{3})*)$ 

Вы можете проверить его здесь: Regex Tester

+0

Отлично, он работает, спасибо:) – Slenkra

+1

Он не будет соответствовать '123.456', который кажется мне действительным :) – jlordo

+0

@jlordo Вы правы. Спасибо, я исправил это. –

Смежные вопросы