RegEx-Stylish - 排除某些页面

RegEx-Stylish - Excluding some pages

提问人:Pierrou 提问时间:4/7/2019 更新时间:4/7/2019 访问量:1075

问:

我正在尝试在浏览器的时尚插件上使用正则表达式来匹配网站。

这个正则表达式需要匹配一个域(我们将命名它website.com)

这就是它应该如何工作:

  • 允许的任何子域
  • HTTP 或 HTTPS 也是
  • website.com/team* => 不允许
  • website.com/forum* => 不允许
  • website.com* =允许>

这意味着它应该适用于网站的任何页面,但在 .com 之后与 /team 或 /forum 的任何链接都不起作用。

我试过了

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

但它不起作用,我不知道如何使它仅匹配域website.com

只是另一个问题,这种正则表达式对 Stylish 有用吗?我在谷歌上没有找到任何关于它的信息

正则表达式 时尚

评论

0赞 The fourth bird 4/7/2019
像这个演示一样尝试一下\b(?:https?:\/\/)?(?:www\.)?.*?\.com(?!\/(?:team|forum))\S*

答:

0赞 The fourth bird 4/7/2019 #1

不匹配,因为它包含 7 个字符。末尾的字符类将匹配不空格字符,可以使用 0+ 倍的量词,在没有尾随正斜杠时也使用 to 匹配。\w{2,6}website([^\s]+*

如果要匹配 website.com,也可以匹配部分,否则将匹配 url 的其余部分。.com[^\s]*

正斜杠应该是否定前瞻的一部分,因为这是您不想直接位于右侧的字符串。

您的模式可能如下所示:

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

那将匹配

  • \b(?:https?:\/\/)?单词边界后跟可选的 http(s)://
  • (?:\w+\.)*匹配 0+ 乘以 1+ 单词字符,后跟一个点
  • website\.com匹配 website.com
  • (?!\/team|\/forum)断言右边的不是 /team 或 /forum 的否定展望
  • \S*匹配 0+ 次非空格字符

正则表达式演示

评论

0赞 Pierrou 4/7/2019
好的,它似乎有效,但由于子域,这很奇怪。如何让它只适用于一个域?这是带有链接的正则表达式演示:regex101.com/r/tA0sV0/38
0赞 The fourth bird 4/7/2019
@Pierrou 你是这个意思吗?regex101.com/r/tA0sV0/39现在它匹配后跟 0+ 倍一个单词字符。www\w*
0赞 Pierrou 4/7/2019
不,我的意思是仅适用于域“website.com”,而不是所有域。我将此正则表达式用于 Stylish (Chrome 上的自定义 CSS 插件)我不希望我的 CSS 应用于我访问的任何网站上;)在你的例子中,如果你输入了 www 或 www2 以外的其他内容,它就不再匹配了。正如我在我的问题上所说,它必须在任何子域(www、www2、站点、网络、应用程序......
0赞 Pierrou 4/7/2019
您对这个问题的评论似乎对任何子域都很好!我没看到。但是,仅域“website.com”呢?
1赞 The fourth bird 4/7/2019
我发现这个页面包含有关与正则表达式匹配的指南,因此我认为您必须将其修改为这些指南。
0赞 Hussain Mustafa 4/7/2019 #2

检查以下正则表达式,

(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赞 Юрий Светлов 4/7/2019 #3

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/'));