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

为何Dart中的此正则表达式会抛出FormatException?

错误原因解析

你的正则表达式触发FormatException的核心原因是:Dart的RegExp引擎不支持PCRE风格的条件正则结构。

你写的正则里的(?(?<=i:)(\d+)|())是Perl兼容正则(PCRE)特有的条件匹配语法,逻辑是“如果当前位置前是i:,则匹配一串数字,否则匹配空内容”。但Dart的正则实现基于ECMAScript标准,并不支持这种条件分组的语法,所以创建RegExp实例时会被判定为无效分组,抛出错误。

补充说明:你在测试平台上应该选择了PCRE模式,所以该正则能正常解析,但Dart的正则引擎不兼容该模式的扩展语法。

另外提一句:你的正则里[a|i|r]的写法有冗余,字符组内的|会被当作普通字符处理,正确写法是[air],不过这不是本次报错的直接原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 23:17:44