Исключить mySite из детектора URL с регулярным выражением

У меня есть это регулярное выражение (в javascript) для обнаружения любого URL-адреса, но не тех, которые содержат «мой сайт» (также известный как «пример» из-за фильтра stackoverflow) в домене.

(?<protocol>\w+s?://)?(?<subdomain>\w+\.)(?<domain>(?!example)(\w+))(?<tls>\.\w{2,4})(?<querystring>/.*)?\S*

  • ? протокол для определения протокола URL-адреса (http, https, ftp и т. д.).
  • ?subdomain для обнаружения любого поддомена
  • ?домен для обнаружения любого домена (здесь я хочу исключить свой сайт)
  • ?tls для обнаружения .com, .org и т. д.
  • ?querystring для определения остальной части URL

Примеры:

No detected
https://www.example.org/hello?
http://www.example.org/hello
https://blog.example.org/hello? 
example.org
www.example.org

Detected
www.example.org
www.www.example.org
example.org

Вы можете увидеть это регулярное выражение и примеры на regex101 здесь

Какова ваша точная проблема? Хотя я могу предположить, что вы также хотите отказаться от http://www.aaamysiteaaa.com/hello. Это правильно?

Pushpesh Kumar Rajwanshi 30.01.2019 12:12

«mySite» - это пример имени моей сети, я просто хочу отбросить только формат www.mysite.com, а не тот пример, который вы говорите, потому что этот пример я хочу обнаружить с помощью регулярного выражения.

CristianCV 30.01.2019 12:17

Итак, вы хотите отказаться только и только в том случае, если доменное имя www.mysite.com, а остальное вы хотите разрешить. Например. вы хотите разрешить www.mysite123.com. Это правильно? Это немного сбивает с толку относительно того, что вы хотите разрешить, а что нет. Можете ли вы добавить несколько разрешенных и запрещенных образцов? Это помогло бы

Pushpesh Kumar Rajwanshi 30.01.2019 12:20

То, что вы говорите, правильно, я только что добавил примеры в сообщение, но с именем «пример», потому что фильтр stackoverflow для URL-адресов

CristianCV 30.01.2019 12:23

Я думаю, что вам просто не хватает ? после (?<subdomain>\w+\.) в вашем регулярном выражении, поскольку вы хотите сделать субдомен также необязательным. Просто добавьте ? после (?<subdomain>\w+\.), и все должно работать так, как вы хотите.

Pushpesh Kumar Rajwanshi 30.01.2019 12:24

Да, я пытаюсь это сделать, и регулярное выражение просто обнаруживает все примеры по ссылке, я хочу, чтобы регулярное выражение игнорировало все строки, содержащие «mysite».

CristianCV 30.01.2019 12:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

  • Группе уровня домена требовался *, поскольку вы хотели разрешить его ноль или более раз.
  • Заключение его в границу слова было необходимо, чтобы запретить его частичное совпадение в тексте.
  • .* в конце регулярного выражения необходимо было заменить на \S*, чтобы избежать совпадения любых пробелов в URL-адресе.

С этими изменениями ваше обновленное и рабочее регулярное выражение становится таким:

\b(?<protocol>\w+s?://)?(?<subdomain>\w+\.)*(?<domain>(?!mysite)(\w+))(?<tls>\.\w{2,4})(?<querystring>/\S*)?\b

Демо

Другие вопросы по теме