Chrome扩展JS正则:匹配Stack Exchange子域名与Stack Overflow
解决Stack Exchange系列域名匹配的正则问题
你之前的正则无效是因为
(*\.)?语法错误,正则里*是量词,不能直接放在括号开头,必须搭配具体的匹配内容。正确的正则表达式可以同时匹配
stackoverflow.com(含www前缀)和任意子域名的stackexchange.com:/^https:\/\/(?:www\.)?(?:stackoverflow\.com|(?:[a-z0-9-]+\.)+stackexchange\.com)/i关键细节说明:
- 用
\.转义点号,避免点号匹配任意字符; (?:...)是非捕获组,仅用于分组逻辑,不额外捕获内容,提升匹配效率;[a-z0-9-]+匹配合法的子域名字符(字母、数字、连字符),+确保至少有一个子域名;- 末尾的
i修饰符开启大小写不敏感匹配(可选,根据需求决定)。
- 用
匹配测试:
- 符合要求的域名都会被匹配:
https://stackoverflow.com/、https://www.stackoverflow.com/、https://bitcoin.stackexchange.com/、https://ethereum.stackexchange.com/ - 如果需要允许无多子域名的
stackexchange.com,可以把(?:[a-z0-9-]+\.)+改成(?:[a-z0-9-]+\.)?,这样https://stackexchange.com/也会被匹配到。
- 符合要求的域名都会被匹配:
内容的提问来源于stack exchange,提问作者Patoshi パトシ
相关产品推荐
相关产品推荐

