[英]RegEx-Stylish - Excluding some pages
我正在尝试在用于浏览器的时尚插件上使用正则表达式来匹配网站。
此正则表达式需要匹配一个域(我们将其命名为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)*
单击此处进行演示。 在这里您可以找到正则表达式的每个部分,以供您理解
此正则表达式在以下测试用例上进行了测试
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.