提问人:Pierrou 提问时间:4/7/2019 更新时间:4/7/2019 访问量:1075
RegEx-Stylish - 排除某些页面
RegEx-Stylish - Excluding some pages
问:
我正在尝试在浏览器的时尚插件上使用正则表达式来匹配网站。
这个正则表达式需要匹配一个域(我们将命名它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
#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赞
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)*
单击此处进行演示。在这里,您可以找到正则表达式的每个部分都已分解以供您理解
此正则表达式在以下测试用例上进行测试
- www.website.com = 允许
- https://www.website.com = 允许
- http://www.website.com = 允许 https://www.website.com/team = 不允许
- https://www.website.com/forum = 不允许
- 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/'));
评论
\b(?:https?:\/\/)?(?:www\.)?.*?\.com(?!\/(?:team|forum))\S*