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

React Native/Expo中正则命名捕获组静默失效问题求助

React Native/Expo中正则命名捕获组静默失效问题求助

大家好,我最近碰到了一个很棘手的问题:同样的正则命名捕获组代码,在Vite+React的Web项目里运行完全正常,但放到React Native/Expo的移动端项目里就彻底失效了,想请教下有没有解决办法。

环境说明

  • Expo SDK 52
  • React Native 0.76.9
  • 测试平台:Android/iOS(Web端用的是普通React+Vite,非Expo Web,运行正常)

问题具体表现

我做了一个时间解析的公共模块,里面用到了带命名捕获组的正则,比如匹配星期的这个:

const dayRegex = /\b(?<day>mon(?:day)?|tues?(?:day)?|wed(?:nesday)?|thu(?:rsday)?|fri(?:day)?|sat(?:urday)?|sun(?:day)?)\b/gi;

在Web项目里用matchAll()遍历匹配结果、读取命名组groups.day都没问题,但到了Expo移动端,这段代码就静默失效——完全匹配不到任何内容。

更奇怪的是,普通的字符串检查比如string.includes()是正常工作的,唯独涉及命名捕获组的matchAll()会出问题。

已经尝试过的方案

  1. 安装并配置了Babel转译插件:
    • @babel/plugin-transform-named-capturing-groups-regex
    • @babel/plugin-transform-duplicate-named-capturing-groups-regex
  2. 清除了Metro缓存,并且重新构建了项目,但问题依然存在。

想请教的问题

  1. React Native的JS引擎(不管是Hermes还是JSC)是不是真的对ES2018的命名捕获组支持不完善?这是已知的限制吗?
  2. 有没有不用把所有正则都改成编号组的替代方案?因为这段代码在Web和移动端共用的包里面,维护两套正则实在太麻烦了,真的想尽量保留原有的正则模式。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 09:43:04