RegEx-Stylish - исключая некоторые страницы - PullRequest
2 голосов
/ 07 апреля 2019

Я пытаюсь использовать регулярное выражение в стильном дополнении для браузеров, чтобы соответствовать веб-сайту.

Это регулярное выражение должно соответствовать одному домену (назовем его website.com)

Ивот как это должно работать:

  • разрешен любой поддомен
  • http или https тоже
  • website.com / team * => не разрешено
  • website.com / forum * => не разрешено
  • website.com * => разрешено

Это означает, что оно должно работать на любых страницах сайта, но любые ссылки с /команда или форум сразу после .com не работают.

Я пробовал это

((\w+)*\.\w{2,6})(\/)(?!team|forum)([^\s]+)

Но это не работает, и я не знаюкак сделать так, чтобы он соответствовал только домену website.com

Еще один вопрос, это регулярное выражение, которое работает для Stylish?Я ничего не нашел в Google об этом

Ответы [ 3 ]

0 голосов
/ 07 апреля 2019

Проверьте следующее регулярное выражение,

(https?:\/\/)?(www.website.com)(\/)?(?!team|forum)(\w)*

Нажмите здесь для демонстрации. здесь вы можете найти, что каждая часть регулярного выражения была разбита для вашего понимания

Это регулярное выражение проверено на следующих тестовых примерах

  1. www.website.com = разрешено
  2. https://www.website.com = разрешено
  3. http://www.website.com = разрешено https://www.website.com/team = не разрешено
  4. https://www.website.com/forum = не разрешено
  5. https://www.website.com/samplepage = разрешено
0 голосов
/ 07 апреля 2019

function Test_1(path){
return /^(https|http)(:\/\/)(www\.|)((?!website)[\w]*?\.|)website\.com((\/)|(\/)((?!forum\/|team\/).*?)|)$/gi.test(path);
}

console.log(Test_1('http://website.com'));
console.log(Test_1('https://www.website.com'));
console.log(Test_1('http://websit.website.com'));
console.log(Test_1('http://websit.website.com/'));
console.log(Test_1('http://websit.website.com/seeg/yukyuk'));

console.log('--------------------------');
console.log('---[Other domain]--------');
console.log('--------------------------');

console.log(Test_1('http://website5.com'));
console.log(Test_1('https://www.website5.com'));
console.log(Test_1('http://websit.website5.com'));
console.log(Test_1('http://websit.website5.com/'));
console.log(Test_1('http://websit.website5.com/seeg/yukyuk'));

console.log('--------------------------');
console.log('---[forum domain]--------');
console.log('--------------------------');

console.log(Test_1('http://website.com/forum'));
console.log(Test_1('http://website.com/forum/'));
console.log(Test_1('http://website.com/forum/rgrg/'));
console.log(Test_1('http://website.com/3forum/rgrg/'));
console.log(Test_1('http://website.com/forum5/rgrg/'));

console.log('--------------------------');
console.log('---[forum subdomain]------');
console.log('--------------------------');

console.log(Test_1('http://websit.website.com/forum'));
console.log(Test_1('http://websit.website.com/forum/'));
console.log(Test_1('http://websit.website.com/forum/rgrg/'));
console.log(Test_1('http://websit.website.com/3forum/rgrg/'));
console.log(Test_1('http://websit.website.com/forum5/rgrg/'));


console.log('--------------------------');
console.log('---[team domain]---------');
console.log('--------------------------');

console.log(Test_1('http://websit.website.com/team'));
console.log(Test_1('http://websit.website.com/team/'));
console.log(Test_1('http://websit.website.com/team/rgrg/'));
console.log(Test_1('http://websit.website.com/3team/rgrg/'));
console.log(Test_1('http://websit.website.com/team5/rgrg/'));


console.log('--------------------------');
console.log('---[team subdomain]-------');
console.log('--------------------------');


console.log(Test_1('http://websit.website.com/team'));
console.log(Test_1('http://websit.website.com/team/'));
console.log(Test_1('http://websit.website.com/team/rgrg/'));
console.log(Test_1('http://websit.website.com/3team/rgrg/'));
console.log(Test_1('http://websit.website.com/team5/rgrg/'));
0 голосов
/ 07 апреля 2019

\w{2,6} не соответствует website, так как содержит 7 символов.Класс символов в конце ([^\s]+, который не будет совпадать с пробельным символом, может использовать квантификатор 0+ раз, используя *, чтобы также соответствовать, когда нет косой черты.

Если вы хотитена сайте website.com вы также можете указать часть .com, иначе [^\s]* будет соответствовать остальной части URL.

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

Ваш шаблон может выглядеть следующим образом:

\b(?:https?:\/\/)?(?:\w+\.)*website\.com(?!\/team|\/forum)\S*

Это будет соответствовать

  • \b(?:https?:\/\/)? Граница слова, за которой следует необязательный http (s): //
  • (?:\w+\.)* Совпадение 0+ раз 1+ слов слова с последующимточка
  • website\.com Match website.com
  • (?!\/team|\/forum) Отрицательный взгляд на то, что прямо справа нет / team или / forum
  • \S*Совпадение 0+ с непробельным символом

Regex demo

...