You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

正则表达式匹配问题求助:使用^锚定后匹配失败

解决你的正则表达式匹配问题

咱们来一步步拆解你遇到的问题,你这是在正则的锚定规则和分支写法上踩了几个常见的坑:

原正则的核心错误

你的正则 /.*^([/php|.html|.css])$/ 有三个致命问题:

  1. 矛盾的锚定逻辑.*^ 完全不符合正则的匹配规则。.* 会贪婪匹配任意字符直到字符串末尾,而 ^ 是锚定整个字符串的起始位置——匹配完 .* 后已经到了字符串结尾,根本不可能再找到起始位置,这直接导致整个正则无法匹配任何内容。
  2. 错误使用字符集 [][] 是用来匹配单个字符的集合,不是多选分支。比如 [/php|.html|.css] 实际会匹配 /ph|. 这些单个字符,完全不是你想要的匹配 .css.html 这类完整后缀的需求。
  3. 未转义特殊字符. 在正则里是通配符(匹配任意单个字符),如果你要匹配实际的点号(比如 .css 里的.),必须用 \. 转义,否则会匹配任意字符,导致错误匹配。

修正后的正则方案

根据你的测试URL(wss://worker.com/sdfsd.csswss://worker.com/phphtml://worker.com/sdfsd/bob.html),你的需求应该是匹配以 .css.html 结尾,或者以 php 结尾的URL。这里给你两个适配不同场景的正则:

场景1:匹配URL结尾为 .css.htmlphp

/(\.css|\.html|php)$/
  • ()| 实现多选分支,明确表示三个可选的结尾模式
  • \. 转义点号,确保匹配实际的后缀点
  • 保留 $ 锚定字符串结尾,确保只匹配符合结尾规则的URL

场景2:匹配URL路径结尾为 /php(比如 wss://worker.com/php 这种路径形式)

如果你实际是想匹配路径以 /php 结尾,而不是单纯的字符串结尾为 php,可以调整为:

/(\.css|\.html|\/php)$/

这里把 php 改成 \/php,转义 / 确保匹配实际的路径分隔符。

验证效果

这两个正则都能完美匹配你的三个测试URL:

  • wss://worker.com/sdfsd.css → 匹配 .css 结尾
  • wss://worker.com/php → 匹配 php(或 /php)结尾
  • html://worker.com/sdfsd/bob.html → 匹配 .html 结尾

内容的提问来源于stack exchange,提问作者Kelly

火山引擎 最新活动