Проверка валюты с помощью десятичной дроби с использованием регулярных выражений - PullRequest
2 голосов
/ 25 апреля 2019

Проверка валюты с десятичным знаком с использованием регулярного выражения

Привет всем, Я пытаюсь использовать регулярное выражение для одного из моих сценариев. Так что я получаю валюту в строковом формате, я должен проверить следующий сценарий

  • длина может быть между 1-6
  • валюта может содержать или не содержать десятичную дробь.
  • десятичное число допускается только один раз.

123,45 - действует 1234 .. - Неверно 12.3 - Действительный 123456 - действует 123456,7 - недействительно

Я попробовал регулярное выражение ^ [0-9.] {1,6} $

но он не проверяет третий сценарий (десятичная дробь допускается только один раз). Пожалуйста, помогите мне с вашими входами.

1 Ответ

2 голосов
/ 25 апреля 2019

Вы можете использовать это регулярное выражение,

^(?=[\d.]{1,6}$)\d+\.?\d+$

Здесь этот (?=[\d.]{1,6}$) положительный взгляд в будущее гарантирует, что общая длина текста составляет от одного до шести символов, а \d+\.?\d+ гарантирует, что число будет в правильном формате.^ и $ - начальный и конечный якоря для обеспечения полного совпадения строк, а не частичного.

Regex Demo

Java-код,

List<String> list = Arrays.asList("123.45","1234..","12.3","123456","123456.7");

list.forEach(x -> {
    System.out.println(x + " --> " + (x.matches("^(?=[\\d.]{1,6}$)\\d+\\.?\\d+$")?"Valid":"Invalid"));
});

Выход,

123.45 --> Valid
1234.. --> Invalid
12.3 --> Valid
123456 --> Valid
123456.7 --> Invalid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...