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

React Native运行安卓应用时Invalid regular expression报错如何解决

问题原因

React Native安卓端搭载的低版本Hermes引擎、旧版JavaScriptCore未支持ES2018新增的正则后行断言((?<=pattern))语法,你的正则中使用了该语法,引擎解析正则时直接抛出无效错误,不会生成对应业务堆栈。
你当前使用的正则核心作用是做数字输入清洗,匹配四类需要删除的内容:

  • 字符串开头的小数点
  • 字符串结尾的小数点
  • 第一个小数点之后出现的所有多余小数点
  • 所有非数字、非小数点的字符
解决方案

不要使用后行断言,直接拆分逻辑实现即可,全版本JS引擎兼容,效果和原正则完全一致,没有任何兼容风险:

// 替换原正则的replace逻辑即可,输入原始字符串,返回清洗后的合法数字串
function formatInput(str) {
  // 第一步:移除所有非数字、非小数点的非法字符
  let result = str.replace(/[^\d.]/g, '')
  // 第二步:仅保留第一个小数点,删除后续所有多余小数点
  const firstDotIndex = result.indexOf('.')
  if (firstDotIndex > -1) {
    result = result.slice(0, firstDotIndex + 1) + result.slice(firstDotIndex + 1).replace(/\./g, '')
  }
  // 第三步:移除开头、结尾的小数点
  result = result.replace(/^\.|\.$/g, '')
  return result
}

逻辑验证

和原正则处理结果完全对齐,测试用例:

  • 输入:.123.45.6abc. → 输出:123.456
  • 输入:abc → 输出:空字符串
  • 输入:123. → 输出:123
  • 输入:.123 → 输出:123
  • 输入:12.3.4 → 输出:12.34

不要尝试找单正则的奇技淫巧写法,这类写法可读性差,后续维护成本高,拆分逻辑的写法在所有RN版本(包括0.60以下的老版本)上都能正常运行,不会再抛正则相关的语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:01:10