string.prototype.matchall

中文文档
4.1.0发布于 2026/08/29MITCommonJS近 30 天下载 2.7亿

Spec-compliant polyfill for String.prototype.matchAll

原始使用文档

string.prototype.matchall Version Badge

github actions coverage License Downloads

npm badge

ES2020 spec-compliant shim for String.prototype.matchAll. Invoke its "shim" method to shim String.prototype.matchAll if it is unavailable or noncompliant.

This package implements the es-shim API interface. It works in an ES3-supported environment, and complies with the spec.

Most common usage:

const assert = require('assert');
const matchAll = require('string.prototype.matchall');

const str = 'aabc';
const nonRegexStr = 'ab';
const globalRegex = /[ac]/g;
const nonGlobalRegex = /[bc]/i;

// non-regex arguments are coerced into a global regex
assert.deepEqual(
    [...matchAll(str, nonRegexStr)],
    [...matchAll(str, new RegExp(nonRegexStr, 'g'))]
);

assert.deepEqual([...matchAll(str, globalRegex)], [
    Object.assign(['a'], { index: 0, input: str, groups: undefined }),
    Object.assign(['a'], { index: 1, input: str, groups: undefined }),
    Object.assign(['c'], { index: 3, input: str, groups: undefined }),
]);

assert.throws(() => matchAll(str, nonGlobalRegex)); // non-global regexes throw

matchAll.shim(); // will be a no-op if not needed

// non-regex arguments are coerced into a global regex
assert.deepEqual(
    [...str.matchAll(nonRegexStr)],
    [...str.matchAll(new RegExp(nonRegexStr, 'g'))]
);

assert.deepEqual([...str.matchAll(globalRegex)], [
    Object.assign(['a'], { index: 0, input: str, groups: undefined }),
    Object.assign(['a'], { index: 1, input: str, groups: undefined }),
    Object.assign(['c'], { index: 3, input: str, groups: undefined }),
]);

assert.throws(() => matchAll(str, nonGlobalRegex)); // non-global regexes throw

Tests

Simply clone the repo, npm install, and run npm test

版本与发布记录

string.prototype.matchall 共发布 19 个版本,首次发布于 2017/09/28;过去 12 个月发布了 1 个版本。

版本发布日期距今
4.1.0latest2026/08/292 个月前
4.0.122024/12/201.9 年前
4.0.112024/03/202 年前
4.0.102023/09/133 年前
4.0.92023/08/293 年前
4.0.82022/11/083 年前

关于 string.prototype.matchall 的常见问题

string.prototype.matchall 是什么?

Spec-compliant polyfill for String.prototype.matchAll

如何安装 string.prototype.matchall?

在项目目录运行 npm install string.prototype.matchall,或使用 pnpm add / yarn add / bun add。

string.prototype.matchall 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/string.prototype.matchall 是否存在。

string.prototype.matchall 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

string.prototype.matchall 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 0.4。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

string.prototype.matchall 可以商用吗?

string.prototype.matchall 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

string.prototype.matchall 的下载量有多少?

根据 npm 官方下载统计,string.prototype.matchall 在 2026/10/05 – 2026/11/03 这 30 天内被下载 266,508,793 次,日均约 8,883,626 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

string.prototype.matchall 还在维护吗?

最新版本 4.1.0 发布于 2026/08/29(2 个月前);至今共发布 19 个版本,其中过去 12 个月发布了 1 个;首次发布于 2017/09/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。