RegEx时尚-不包括某些页面
我正在尝试在浏览器的时尚插件上使用regex,以匹配网站 此正则表达式需要匹配一个域(我们将其命名为RegEx时尚-不包括某些页面,regex,stylish,Regex,Stylish,我正在尝试在浏览器的时尚插件上使用regex,以匹配网站 此正则表达式需要匹配一个域(我们将其命名为website.com) 这就是它的工作原理: 允许任何子域 也可以使用http或https website.com/team*=>不允许 website.com/forum*=>不允许 website.com*=>允许 这意味着它应该适用于网站的任何页面,但在.com之后与/team或/forum的任何链接都不起作用 我试过了 ((\w+*\。\w{2,6})(\/)(?!团队论坛)([^\
website.com
)
这就是它的工作原理:
- 允许任何子域
- 也可以使用http或https
- website.com/team*=>不允许
- website.com/forum*=>不允许
- website.com*=>允许
((\w+*\。\w{2,6})(\/)(?!团队论坛)([^\s]+)
但它不起作用,我不知道如何使它只匹配域website.com
还有一个问题,这种正则表达式是否适用于时尚?我在谷歌上找不到关于它的任何信息该
\w{2,6}
与网站
不匹配,因为该网站包含7个字符。如果([^\s]+
末尾的字符类与空白字符不匹配,则可以使用0+次的量词,并使用*
在没有尾随正斜杠的情况下进行匹配
如果要匹配website.com,还可以匹配.com
部分,否则[^\s]*
将匹配url的其余部分
正斜杠应该是负向前看的一部分,因为这是您不希望直接位于右侧的字符串
您的模式可能如下所示:
\b(?:https?:\/\/)?(?:\w+\.)*website\.com(?!\/team|\/forum)\S*
那会匹配的
单词边界后跟可选的http://\b(?:https?:\/\/)?
匹配0+乘以1+个单词字符,后跟一个点(?:\w+\)*
Match-website.comwebsite\.com
负向前看,断言直接在右边的不是/team或/forum(?!\/team |\/forum)
匹配非空白字符的0+倍\S*
检查以下正则表达式
(https?:\/\/)?(www.website.com)(\/)?(?!team|forum)(\w)*
点击演示。在这里你可以发现正则表达式的每一部分都被分解了以供你理解
此正则表达式在以下测试用例中进行测试
功能测试_1(路径){
return/^(https | http)(:\/\/)((?!website)[\w]*?\。|)website\.com(\/)(((?!forum\/| team\/).*)$/gi.test(path);
}
控制台日志(测试1)http://website.com'));
控制台日志(测试1)https://www.website.com'));
控制台日志(测试1)http://websit.website.com'));
控制台日志(测试1)http://websit.website.com/'));
控制台日志(测试1)http://websit.website.com/seeg/yukyuk'));
console.log('----------------------------');
log('--[Other domain]----------');
console.log('----------------------------');
控制台日志(测试1)http://website5.com'));
控制台日志(测试1)https://www.website5.com'));
控制台日志(测试1)http://websit.website5.com'));
控制台日志(测试1)http://websit.website5.com/'));
控制台日志(测试1)http://websit.website5.com/seeg/yukyuk'));
console.log('----------------------------');
console.log('-[forum domain]----------');
console.log('----------------------------');
控制台日志(测试1)http://website.com/forum'));
控制台日志(测试1)http://website.com/forum/'));
控制台日志(测试1)http://website.com/forum/rgrg/'));
控制台日志(测试1)http://website.com/3forum/rgrg/'));
控制台日志(测试1)http://website.com/forum5/rgrg/'));
console.log('----------------------------');
console.log('-[forum subdomain]-');
console.log('----------------------------');
控制台日志(测试1)http://websit.website.com/forum'));
控制台日志(测试1)http://websit.website.com/forum/'));
控制台日志(测试1)http://websit.website.com/forum/rgrg/'));
控制台日志(测试1)http://websit.website.com/3forum/rgrg/'));
控制台日志(测试1)http://websit.website.com/forum5/rgrg/'));
console.log('----------------------------');
log('-[team domain]-----------');
console.log('----------------------------');
控制台日志(测试1)http://websit.website.com/team'));
控制台日志(测试1)http://websit.website.com/team/'));
控制台日志(测试1)http://websit.website.com/team/rgrg/'));
控制台日志(测试1)http://websit.website.com/3team/rgrg/'));
控制台日志(测试1)http://websit.website.com/team5/rgrg/'));
console.log('----------------------------');
log('-[team subdomain]-');
console.log('----------------------------');
控制台日志(测试1)http://websit.website.com/team'));
控制台日志(测试1)http://websit.website.com/team/'));
控制台日志(测试1)http://websit.website.com/team/rgrg/'));
控制台日志(测试1)http://websit.website.com/3team/rgrg/'));
控制台日志(测试1)http://websit.website.com/team5/rgrg/);
像这样尝试\b(?:https?:\/\/)(?:www\)?.*?.com(?!\/(?:team | forum))\S*
好的,它似乎可以工作,但由于子域的原因,它很奇怪。如何使它只在一个域中工作?这是带有链接的regex演示:@Pierrou你的意思是这样的吗?现在它匹配www\w*
,后跟0+倍的单词字符。不,我的意思是只在域“website.com”中工作,而不是在所有域中。我使用这个regex是为了时尚(Chrome上的自定义CSS插件)我不希望我的CSS应用于我所访问的任何网站;)以你为例,如果你放置了www或www2以外的内容,它将不再匹配。正如我在我的问题上所说,它必须在任何子域(www、www2、站点、web、应用程序等)上工作你对这个问题的评论似乎对任何子域都很有效!我没有看到它。但是仅仅是“website.com”域如何?我发现了与正则表达式匹配的指导原则,所以我认为你必须根据这些指导原则修改它。