Написать регулярное выражение с хитрым условием
Нужна регулярка, которая бы проверяла ссылку с такими условиями:
- ссылка относительная
- ссылка может содержать что угодно (пусть будет так, в смысле любые символы)
- ссылка может содержать слово after (в любой позиции), только в том случае если это before/after
Вот что у меня получилось. Условие с http(s) и after отрабатывает нормально, то есть after работает только после before. Но ничего другое не отрабатывает, ну например просто '/foo/bar'
/^(?<!https?:\/\/).*(?<=before\/)after/.test('/before/after')
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Вы можете использовать
/^(?!https?:\/\/)(?!.*(?<!before\/)after).*/
Подробности
^- начало строки(?!https?:\/\/)- в начале не должно бытьhttps://илиhttp://(?!.*(?<!before\/)after)- в строке не должно бытьafter, перед которым нетbefore/.*- 0 и более символов, отличных от символов перехода на новую строку, как можно больше