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

如何编写正则匹配双大括号内携带24位十六进制ID的字符串

原正则的问题

你当前使用的/{{.*?[0-9a-fA-F]{24}}}/gm存在三个核心问题:

  • .*?作为惰性匹配,默认可以匹配}字符,会出现跨{{}}块的错误匹配:比如遇到{{xxx|123}} xxxx {{xxx|24位ID}}这类内容时,正则会从第一个{{开始匹配,一直吞到第二个}}结束,把整段不符合要求的内容也纳入匹配结果。
  • 没有限制24位十六进制ID必须紧挨着闭合的}},如果某个{{}}块中间刚好出现连续24位十六进制字符、末尾ID长度不足,也会被误匹配。
  • 默认的.元字符不匹配换行符,你示例中存在跨换行的{{}}块,原正则无法匹配这类内容。

正确的正则写法

推荐使用这个表达式即可满足需求:
/{{[^}]*?[0-9a-fA-F]{24}}}/gm

表达式说明:

  • {{ 匹配双大括号开头
  • [^}]*? 惰性匹配所有非}的字符(包含换行符,天然支持跨换行的{{}}块,同时不会跨多个{{}}块匹配)
  • [0-9a-fA-F]{24} 匹配24位十六进制ID
  • }} 匹配双大括号结尾,确保24位ID是{{}}块的末尾内容

如果需要更严格的校验(比如ID必须是最后一个|分隔的字段,避免块中间出现24位十六进制的误匹配),可以用更严谨的写法:
/{{[^}]*\|[0-9a-fA-F]{24}}}/gm

匹配测试效果

用你提供的示例字符串测试,会命中以下4个符合要求的结果:

  • {{Syed Waqar Ameen|User|60feab5768e2da001960caf7}}
  • {{Syed Waqar Ameen|User|60feab5768e2da001960caf7}}
  • {{Syed Waqar Ameen|User|60feab5768e2da001960caf7}}
  • {{dsdfsfcvxcvxcv|sdfsdf|60feab5768e2da001960caf7}}

末尾是123的{{Syed Waqar Ameen|User|123}}不会被匹配,完全符合规则要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:18:02