Этот вид фильтрации не очень подходит для регулярных выражений.
Проблема в том, что правила того, что должно быть «совпадением», на самом деле довольно сложны. По сути, правила таковы:
Подберите что-нибудь, если оно имеет:
- начало текста
- либо:
- ровно три
w
символа, за которыми следует точка ИЛИ
- любые буквенно-цифровые символы или точки, повторяемые любое количество раз, за которыми следует точка
- если все эти символы не являются
w
символами, но количество символов не равно трем (плюс точка)
- два или три алфавитно-цифровых символа
- конец текста
, если все эти символы не являются символами w ... часть - сложная часть. Regex не очень хорошо подходит для этой задачи.
Для "исторических" целей:
Используйте {n}
, чтобы повторить часть выражения n раз.
^w{3}\.[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?$
Используйте ?
, чтобы сделать часть выражения необязательной.
Круглые скобки являются оператором группировки. «W раз три» и точка перемещаются внутри группы, и группа становится необязательной с помощью оператора ?
.
^Guess what? this doesn't work.$
^I tried to delete the answer but I can't until you unaccept it.$
В этих примерах я также избежал последней косой черты с обратной косой чертой, поскольку регулярные выражения часто разделяются символами /
. Вы можете удалить его, если вам это не нужно.