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

Android端React Native启动崩溃:正则表达式组指定符名称无效

Android端React Native应用启动崩溃:正则表达式组名无效

问题现象

Android端启动页直接崩溃,报错信息如下:

15:48:19.359  E  Exception in native call from JS
                 com.facebook.react.devsupport.JSException: Invalid regular expression: invalid group specifier name
                    at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
                    at android.os.Handler.handleCallback(Handler.java:938)
                    at android.os.Handler.dispatchMessage(Handler.java:99)
                    at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:27)
                    at android.os.Looper.loop(Looper.java:223)
                    at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:228)
                    at java.lang.Thread.run(Thread.java:923)
                 Caused by: com.facebook.jni.CppException: Invalid regular expression: invalid group specifier name
                 
                 no stack
                    ... 7 more

iOS端运行正常,已尝试删除应用并重新构建,问题未解决。

排查与解决步骤

  • 定位核心原因:该报错是因为代码中使用了Android端JS引擎不兼容的正则表达式语法。iOS的JavaScriptCore支持ES2018+的正则特性(比如命名捕获组(?<name>...)),但Android默认的Hermes引擎或旧版V8对这类特性支持不足。
  • 全局检查正则表达式:搜索项目中所有正则表达式,重点排查包含命名捕获组、反向引用等ES6+特性的写法。例如/(?<id>\d+)/这种命名组语法,在Android端会触发报错。
  • 替换不兼容语法:将命名捕获组改为普通捕获组,通过索引引用结果。比如把/(?<year>\d{4})-(?<month>\d{2})/替换为/(\d{4})-(\d{2})/,后续用$1、$2获取分组内容。
  • 升级Hermes引擎:如果使用Hermes,检查版本是否过旧,升级到最新稳定版,新版本通常会支持更多正则特性。
  • 清理全量缓存:除删除应用外,执行以下命令清理React Native和Android构建缓存:
    npx react-native start --reset-cache
    
    cd android && ./gradlew clean
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:34:58