Java Regex для положительной числовой и нескольких специальных символов проверки для конкретного шаблона - PullRequest
1 голос
/ 27 мая 2019

У меня есть Строка ex = 1,2,3,4,5-7,8,9,10-15,34,898

В приведенной выше строке мое регулярное выражение должно проверить следующие вещи

  1. ex String должна содержать только числовые значения (0-9) и два специальных символа , - один.
  2. регулярное выражение должно проверять ex не должно начинаться с пробела, cama (,) и hyfun (-), то же самое не должно заканчиваться.
  3. После того, как cama (,) должна иметь только числовое значение.
  4. Строка ex должна поддерживать только положительные числа 0-9.
  5. После hyfun (-) должно быть только положительное числовое значение.
  6. Не должно быть места в строке.
  7. Символ hyfun (-) является индикатором диапазона в приведенной выше строке, поэтому он должен префикс и суффикс с положительным числовым значением.
  8. cama (,) - это разделитель для каждого элемента в строке, поэтому он должен иметь положительное числовое значение.

так что я попробовал с отдельным регулярным выражением, что делает мой код неуклюжим, и в нескольких случаях его ошибка

 //Regex Pattern for validating number alone as its starting and ending of the string
        Pattern digits = Pattern.compile ("^[0-9](.*[0-9])?$");
 //Regex Pattern for validating special character along with the digits alone
        Pattern special = Pattern.compile("^[0-9,-]*$");
//Regex Pattern for validating only positive numeric values alone
        Pattern positiveNumeric = Pattern.compile("^\\d+$");

1 Ответ

2 голосов
/ 27 мая 2019

Вот общий шаблон регулярных выражений, который должен работать:

^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*$

Демо

Количество \d+(?:-\d+)? соответствует одномуили более цифр, за которыми необязательно следует дефис, а затем одна или несколько других цифр.Затем мы добавляем это в конец шаблона:

(?:,\d+(?:-\d+)?)*

Это соответствует запятой, за которой следует другая группа цифр / диапазонов цифр, ноль или более раз.

Обратите внимание, что ^ и $ привязки могут не понадобиться в вашем коде Java, если вы используете, например, String#matches, который автоматически добавляет эти привязки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...