Процент регулярного выражения, разделенный запятой - PullRequest
1 голос
/ 03 января 2012

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

  1. Число от 5 до 100
  2. Число отделяется запятой (55,70,90)
  3. Число уникально в строке

Например:

  • 10,20,50 ОК
  • 10, 20,50 НЕТ (пробел)
  • 10,20,50, NO (последняя запятая)
  • 10,10,20 NO (уникальный)

Вы можете мне помочь?

Ответы [ 3 ]

2 голосов
/ 03 января 2012

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

  1. переменное количество элементов в списке
  2. ограничения на числа (> 5, <100), которые обычно трудно представить в регулярном выражении. </li>

Вы можете сделать это просто с помощью String # split () :

String arr[] = s.split(",");
for (int i=0; i<s.length; i++) {
  // apply your rules here
}
1 голос
/ 03 января 2012

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

Я бы:

  • Используйте регулярное выражение, чтобы убедиться, что строка содержит только цифры и запятые: ^(?:[0-9]+,)*[0-9]+$
  • Используйте split(',', $input), чтобы превратить в массив
  • Цикл по массиву и убедитесь, что числа находятся в диапазоне от 5 до 100 (арифметическое сравнение) и не имеют дубликатов (сравнение массива).
0 голосов
/ 03 января 2012

Решение вопроса 1)

(?:[5-9]|[1-9][0-9]|100)(?![0-9])

Число от 5 до 9, от 10 до 99 или 100, за которым не следует цифра.

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