Я пытаюсь использовать регулярное выражение в аддоне Stylish для браузеров, чтобы соответствовать веб-сайту.
Это регулярное выражение должно соответствовать одному домену (мы назовем его website.com
)
И вот как это должно работать:
Это буквально означает, что он должен работать для любых страниц веб-сайта, но любые ссылки с /team или /forum сразу после .com не работают.
я пробовал это
((\w+)*\.\w{2,6})(/)(?!team|forum)([^\s]+)
Но это не работает, и я не знаю, как сделать, чтобы он соответствовал только домену website.com
Еще один вопрос, подходят ли такие регулярные выражения для Stylish? в гугле ничего не нашел по этому поводу
\w{2,6}
не соответствует website
, потому что содержит 7 символов. Класс символов в конце ([^\s]+
, который будет соответствовать не пробельному символу, может использовать квантификатор 0+ раз, используя *
, чтобы также соответствовать, когда нет косой черты в конце.
Если вы хотите сопоставить веб-сайт.com, вы также можете сопоставить часть .com
, иначе [^\s]*
будет соответствовать остальной части URL.
Косая черта должна быть частью отрицательного просмотра вперед, поскольку это строка, которую вы не хотите располагать прямо справа.
Ваш шаблон может выглядеть так:
\b(?:https?://)?(?:\w+\.)*website\.com(?!/team|/forum)\S*
Это будет соответствовать
\b(?:https?://)?
Граница слова, за которой следует необязательный http(s)://(?:\w+\.)*
Совпадение 0+ раз 1+ символов слова, за которыми следует точкаwebsite\.com
Совпадение на сайте.com(?!/team|/forum)
Отрицательный взгляд вперед, чтобы утверждать, что то, что находится прямо справа, не является /командой или /форумом\S*
Совпадение 0+ раз с непробельным символомДемонстрация регулярных выражений
Хорошо, кажется, работает, но это странно из-за субдоменов. Как заставить его работать только для одного домена? Это демонстрация регулярного выражения со ссылками, которые у меня есть: regex101.com/r/tA0sV0/38
@Pierrou Ты имеешь в виду вот так? regex101.com/r/tA0sV0/39 Прямо сейчас это соответствует www\w*
, за которым следует 0+ раз символ слова.
Нет, я имею в виду только домен "website.com", а не все домены. Я использую это регулярное выражение для Stylish (аддон в Chrome для пользовательского CSS). Я не хочу, чтобы мой CSS применялся на любом веб-сайте, на который я захожу;) И, например, если вы поместите что-то еще, кроме www или www2, это не соответствовать больше. Как я уже сказал в своем вопросе, он должен работать на любом поддомене (www, www2, сайт, веб, приложение, ...)
Ваш комментарий к вопросу, похоже, хорошо работает для любых поддоменов! Я этого не видел. Но как насчет домена «website.com»?
@Pierrou Теперь он будет соответствовать только веб-сайту.com regex101.com/r/RiPq3k/1
Это работает хорошо! Вы знаете, будет ли это регулярное выражение работать в Stylish?
Я нашел эта страница с рекомендациями по сопоставлению с регулярным выражением, поэтому я думаю, что вам нужно изменить его в соответствии с этими рекомендациями.
Проверьте следующее регулярное выражение,
(https?://)?(www.website.com)(/)?(?!team|forum)(\w)*
Нажмите здесь для демонстрации. здесь вы можете найти, что каждая часть регулярного выражения была разбита для вашего понимания
Это регулярное выражение тестируется на следующих тестовых примерах
function Test_1(path){
return /^(https|http)(://)(www\.|)((?!website)[\w]*?\.|)website\.com((/)|(/)((?!forum/|team/).*?)|)$/gi.test(path);
}
console.info(Test_1('http://website.com'));
console.info(Test_1('https://www.website.com'));
console.info(Test_1('http://websit.website.com'));
console.info(Test_1('http://websit.website.com/'));
console.info(Test_1('http://websit.website.com/seeg/yukyuk'));
console.info('--------------------------');
console.info('---[Other domain]--------');
console.info('--------------------------');
console.info(Test_1('http://website5.com'));
console.info(Test_1('https://www.website5.com'));
console.info(Test_1('http://websit.website5.com'));
console.info(Test_1('http://websit.website5.com/'));
console.info(Test_1('http://websit.website5.com/seeg/yukyuk'));
console.info('--------------------------');
console.info('---[forum domain]--------');
console.info('--------------------------');
console.info(Test_1('http://website.com/forum'));
console.info(Test_1('http://website.com/forum/'));
console.info(Test_1('http://website.com/forum/rgrg/'));
console.info(Test_1('http://website.com/3forum/rgrg/'));
console.info(Test_1('http://website.com/forum5/rgrg/'));
console.info('--------------------------');
console.info('---[forum subdomain]------');
console.info('--------------------------');
console.info(Test_1('http://websit.website.com/forum'));
console.info(Test_1('http://websit.website.com/forum/'));
console.info(Test_1('http://websit.website.com/forum/rgrg/'));
console.info(Test_1('http://websit.website.com/3forum/rgrg/'));
console.info(Test_1('http://websit.website.com/forum5/rgrg/'));
console.info('--------------------------');
console.info('---[team domain]---------');
console.info('--------------------------');
console.info(Test_1('http://websit.website.com/team'));
console.info(Test_1('http://websit.website.com/team/'));
console.info(Test_1('http://websit.website.com/team/rgrg/'));
console.info(Test_1('http://websit.website.com/3team/rgrg/'));
console.info(Test_1('http://websit.website.com/team5/rgrg/'));
console.info('--------------------------');
console.info('---[team subdomain]-------');
console.info('--------------------------');
console.info(Test_1('http://websit.website.com/team'));
console.info(Test_1('http://websit.website.com/team/'));
console.info(Test_1('http://websit.website.com/team/rgrg/'));
console.info(Test_1('http://websit.website.com/3team/rgrg/'));
console.info(Test_1('http://websit.website.com/team5/rgrg/'));
Попробуйте так
\b(?:https?://)?(?:www\.)?.*?\.com(?!/(?:team|forum))\S*
демо