Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RegEx时尚-不包括某些页面_Regex_Stylish - Fatal编程技术网

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})(\/)(?!团队论坛)([^\

我正在尝试在浏览器的时尚插件上使用regex,以匹配网站

此正则表达式需要匹配一个域(我们将其命名为
website.com

这就是它的工作原理:

  • 允许任何子域
  • 也可以使用http或https
  • website.com/team*=>不允许
  • website.com/forum*=>不允许
  • website.com*=>允许
这意味着它应该适用于网站的任何页面,但在.com之后与/team或/forum的任何链接都不起作用

我试过了

((\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*
那会匹配的

  • \b(?:https?:\/\/)?
    单词边界后跟可选的http://
  • (?:\w+\)*
    匹配0+乘以1+个单词字符,后跟一个点
  • website\.com
    Match-website.com
  • (?!\/team |\/forum)
    负向前看,断言直接在右边的不是/team或/forum
  • \S*
    匹配非空白字符的0+倍

检查以下正则表达式

(https?:\/\/)?(www.website.com)(\/)?(?!team|forum)(\w)*
点击演示。在这里你可以发现正则表达式的每一部分都被分解了以供你理解

此正则表达式在以下测试用例中进行测试

  • www.website.com=允许
  • =允许
  • =允许=不允许
  • =不允许
  • =允许
  • 功能测试_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”域如何?我发现了与正则表达式匹配的指导原则,所以我认为你必须根据这些指导原则修改它。