Регулярное выражение: 2 цифры, за которыми следует .. или - или __, за которыми следуют 2 цифры - PullRequest
4 голосов
/ 26 октября 2011

У меня есть регулярное выражение, которое мне нужно реализовать.Правила:

 2 digits followed by 
 2 .. or 2 -- or 2 __ followed by 2 digits
it cannot be empty
it cannot have only one pair (i.e. 01)

The string can be up to 1000 characters in length.  
i.e., 
01..02--03  or 
01..01 or 
01--02--03--04--05..06   and so on

Ответы [ 4 ]

6 голосов
/ 26 октября 2011

Вот как я бы это сделал:

\d{2}(?:(?:[.]{2}|-{2}|_{2})\d{2})+

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

Если вам нужно закрепить это, вы можете добавить ^ спереди и $ в конце.

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

Кроме того, в зависимости от шрифта и размера экрана некоторые символы могут визуально объединяться в один более длинный символ, что затрудняет определение количества их в последовательности.Нежелательный знак является ярким примером этого, рассмотрим: _____ Сколько это подчеркиваний?Сравните и сопоставьте это с этим выражением: _{5}

3 голосов
/ 26 октября 2011

Это должно сработать:

^(?:\d{2}(?:--|\.\.|__))+\d{2}$
  1. С начала строки выполните следующее:
  2. Найдите 2 цифры
  3. Далее -- или .. или __
  4. Повторите шаги 2 и 3 столько раз, сколько возможно
  5. Убедитесь, что он заканчивается двумя цифрами
2 голосов
/ 26 октября 2011

Проверено на Regexpal.com:

(\d{2}(\.{2}|-{2}|_{2}))+\d{2}

Это не позволит использовать номера типа 01.-02

2 голосов
/ 26 октября 2011
^\d\d((?:\.\.|--|__)\d\d)+$

Вот ваше регулярное выражение.

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