繁体   English   中英

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相匹配

另一个问题是,这种正则表达式对时尚用户有用吗? 我在Google上找不到任何相关信息

\\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匹配website.com
  • (?!\\/team|\\/forum)负向断言来断言直接在右边的不是/ team或/ forum
  • \\S*匹配0+次非空格字符

正则表达式演示

检查以下正则表达式,

(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 =允许

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM