2015-07-01 2 views
0

Еще один вопрос о регулярном выражении. Проведите много времени, травля через StackOverflow без радости.Повторяющиеся числа и последовательности Regex

мне нужно regexs (regexai?) Для следующих целей:

  • не может содержать более 4 двухместных номера подряд. Например, 22334455 не удается,
  • Не может иметь последовательность цифр, длинную или равную 5 цифрам. Например, 12345 или 56789 оба fail,
  • Должно иметь 4 или более разных цифр. Например, 77788778877 не работает

Я не ожидаю, что одно выражение будет соответствовать всем, предполагая, что, вероятно, потребуется 2/3.

Приветствия

+0

Что вы попробовали? – Renzo

+0

Если у вас нет опыта с * regexps *, используйте ручную петлю для повторения строк и утверждения шаблонов или ['count_chars'] (http://php.net/count_chars). Проверка шаблонов стиля «12345» - это слишком много усилий (или альтернативный список предустановок) с любым регулярным выражением. (Также хорошо для вас, чтобы проверить другие вопросы заранее. И это на самом деле одна из наиболее интересных тем. Однако слишком много вопросов в этом теге имеют требование → разнообразие gimme-кода, вы все равно должны показать какую-то попытку или исследовательскую выдержку.) – mario

+0

Почему вы настаиваете на использовании регулярных выражений? (Третье требование не может быть выполнено с регулярным выражением легко) Каков вход (только цифры или что-то еще)? Должны ли эти требования соответствовать любой фразе или только ее части? –

ответ

2

Единственное требование, на мой взгляд, которые могут быть решены с помощью регулярного выражения является первым, с таким выражением, как это: ((\d)\2){4}. Это попытается сопоставить цифру и ту же цифру 4 раза (она будет искать 4 пары).

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

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

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