Регулярка для валидных телеграм каналов

Пытаюсь выбрать валидные ссылки на телеграм каналы. Есть массив строк вида :

https://t.me/group1
https://t.me/group2
https://t.me/botgroup1
https://t.me/groupbot
https://t.me/group_bot
https://t.me/joinchat/xR7tqA43Dg
https://www.google.com/en/blabla

Из них подходят первые 3. Нужно выбрать в которых не присутствует joinchat и bot на конце.

Такой регуляркой выбирает тг-каналы, исключая вхождение joinchat.

/t.me\/(?!.*?(?:joinchat))([a-zA-Z0-9_]{5,32})/g;

Но не могу сообразить как сделать исключение bot на конце.


Ответы (1 шт):

Автор решения: Wiktor Stribiżew

Используйте

(?<![^\/])t\.me\/(?!.*?joinchat)(?!.*bot$)[a-zA-Z0-9_]{5,32}$

См. пример работы выражения.

  • (?!.*?joinchat) - сразу после текущей позиции в строке не должно быть joinchat
  • (?!.*bot$) - в конце строки не должно быть bot.
→ Ссылка