You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在正则中嵌套子正则,匹配双大括号内美元符及竖线后对应内容

解决方案

你可以直接使用以下正则:

/{{\s*\$([^}| ]+)(?:\s*\|\s*([^}]+))?\s*}}/g

匹配规则说明

  • 捕获组1对应你需要的第一类内容:$后的变量名字符串
  • 捕获组2对应你需要的第二类内容:首个|之后的所有可选管道内容,没有竖线的场景下该捕获组为 undefined
  • 如果你需要单独匹配无竖线的场景,直接删掉(?:\s*\|\s*([^}]+))?这段可选逻辑即可,和你原有单独匹配的正则逻辑完全兼容

测试用例验证

所有你给出的测试场景都可以正确匹配:

  • 匹配{{ $name }}:捕获组1为name,捕获组2无结果,符合预期
  • 匹配{{ $name | pipe1 | pipe2 }}:捕获组1为name,捕获组2为pipe1 | pipe2,符合预期
  • 匹配{{ $name | singlePipe }}:捕获组1为name,捕获组2为singlePipe,符合预期
  • 匹配{{ $ whitespaceBeforeDollar | singlePipe }}:$后存在空格,无法匹配变量名规则,无捕获结果,符合预期
  • 匹配{{ noDollar | pipe1 | pipe2 }}:无$标识,无捕获结果,符合预期
  • 匹配{{ $name textWithoutPipe }}:变量名后存在非竖线的其他文本,不符合规则,无捕获结果,符合预期
  • 匹配{{$whiteSpace | tolerated}}:捕获组1为whiteSpace,捕获组2为tolerated,符合预期
  • 匹配{{$whiteSpace|tolerated}}:捕获组1为whiteSpace,捕获组2为tolerated,符合预期

内容的提问来源于stack exchange,提问作者U. Bulle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:51:02