React Native:<string>.matchAll 不是函数

ssc*_*ssc 6 javascript android react-native

运行我的 React Native 应用程序时出现奇怪的错误:

一些示例代码:

const { url } = <incoming object>;
const reURL   = <my regex>;

console.debug('url:', url);
console.debug('typeof url:', typeof url);

matches = [...url.matchAll(reURL)];
Run Code Online (Sandbox Code Playgroud)

日志输出:

url: <as expected>
typeof url: string
Run Code Online (Sandbox Code Playgroud)

错误信息:

TypeError: url.matchAll is not a function. (In 'url.matchAll(reURL)', 'url.matchAll' is undefined)
Run Code Online (Sandbox Code Playgroud)

在 iOS 上一切正常,错误仅发生在 Android 上。

相当新的环境,npm几天前更新了所有软件包。

有谁知道从哪里开始寻找解决方案?

小智 1

我有同样的问题。String.matchAll不适用于 Android。你应该match使用matchAll.

例子:

const regex = new RegExp(text, 'ig');
const arr = string.match(regex);
Run Code Online (Sandbox Code Playgroud)

你将得到一个数组匹配正则表达式

  • string.match 的功能与 matchAll 完全不同。多个值的“匹配”仅返回这些值的数组。`matchAll` 返回一个迭代器,其值对象与字符串中每个匹配的位置相对应,并且还可以处理 `match` 无法处理的多个捕获组。所以,是的,“match”并不能替代“matchAll”,后者更有用。 (2认同)