# @bluelovers/to-regex-range2 中文文档

规范地址：https://npmcn.com/package/%40bluelovers/to-regex-range2/

版本：5\.0\.1
npm 元数据更新时间：2022-09-19T23:15:55.385Z
中文译文更新时间：2026-11-08T08:48:27.255Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40bluelovers/to-regex-range2
原文对照：https://npmcn.com/package/%40bluelovers/to-regex-range2/?lang=original
项目主页：https://github.com/bluelovers/to-regex-range#readme
源码仓库：https://github.com/bluelovers/to-regex-range

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：145 kB，18 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=8\.0
- 运行依赖：1 个
- 首次发布：2022-09-19T23:15:54.903Z
- 最新版本发布：2022-09-19T23:15:55.244Z
- 近 30 天下载量：71902（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 0 个）

## 中文简介

传递2个数字,获得匹配范围的Regex相容源字符串. 对278万多条试验断言进行了验证.

## 安装

```sh
npm install @bluelovers/to-regex-range2
```

也可以使用：`pnpm add @bluelovers/to-regex-range2`、`yarn add @bluelovers/to-regex-range2`、`bun add @bluelovers/to-regex-range2`

## README

# 到登记区域 [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/to-regex-range.svg?style=flat)](https://www.npmjs.com/package/to-regex-range) [![NPM monthly downloads](https://img.shields.io/npm/dm/to-regex-range.svg?style=flat)](https://npmjs.org/package/to-regex-range) [![NPM total downloads](https://img.shields.io/npm/dt/to-regex-range.svg?style=flat)](https://npmjs.org/package/to-regex-range) [![Linux Build Status](https://img.shields.io/travis/micromatch/to-regex-range.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/to-regex-range)

> 传递2个数字,获得匹配范围的Regex相容源字符串. 对278万多条试验断言进行了验证.

请考虑跟随这个项目的作者, [乔恩·斯林克特](https://github.com/jonschlinkert),并考虑主演该项目以显示你的:心:和支持.

## 安装

安装方式 [无](https://www.npmjs.com/)数字 :

```sh
$ npm install --save to-regex-range
```

**这有什么用?**  

这个自由产生 `source` 要传递到的字符串 `new RegExp()` 用于匹配数字范围.

**示例**

```js
const toRegexRange = require('to-regex-range');
const regex = new RegExp(toRegexRange('15', '95'));
```

将字符串还原,以便您在传递给 `new RegExp()` (如添加) `^` 或者说 `$` 边框,定义旗帜,或合并其另一个字符串.

  
**为什么用这个图书馆?**  

### 方便性

创建匹配数字的正则表达式会变得非常快地被欺骗地复杂.

例如,假设您需要验证 regex 来匹配部分用户代号,邮政编码,社会保障号码,税收代号等:

-   匹配的正则 `1` => `/1/` (轻松多了)
-   匹配的正则 `1` 结束 `5` => `/[1-5]/` (不错... )
-   匹配的正则 `1` 或者说 `5` => `/(1|5)/` (仍然轻松. )
-   匹配的正则 `1` 结束 `50` => `/([1-9]|[1-4][0-9]|50)/` (呜-哦
-   匹配的正则 `1` 结束 `55` => `/([1-9]|[1-4][0-9]|5[0-5])/` (没有证明,我可以做到这一点... )
-   匹配的正则 `1` 结束 `555` => `/([1-9]|[1-9][0-9]|[1-4][0-9]{2}|5[0-4][0-9]|55[0-5])/` (可能不会... )
-   匹配的正则 `0001` 结束 `5555` => `/(0{3}[1-9]|0{2}[1-9][0-9]|0[1-9][0-9]{2}|[1-4][0-9]{3}|5[0-4][0-9]{2}|55[0-4][0-9]|555[0-5])/` 好吧,我明白了这一点

数字是精心构思的,但是它们也是非常基本的。 在现实世界中,你可能需要 生成一个正则的飞行验证.

**学多点**

如果你有兴趣学习更多 [字符类](http://www.regular-expressions.info/charclass.html) 我个人一直发现 [正则表达式。 info](http://www.regular-expressions.info/charclass.html) 相当有用.

### 重度测试

截止2019年4月07日,本馆开通运营 [\>1m 测试断言](https://npmcn.com/package/%40bluelovers/to-regex-range2/test/test.js) 对照生成的正则距离 提供野蛮力量 核实结果是否正确.

我的MacBook Pro 2.5 GHz Intel Core i7的测试以~280ms运行.

### 优化

生成的正则表达式被优化:

-   重复序列和字符类别使用限定词减少
-   足够聪明,可以使用 `?` 当数字或范围可以是正数或负数时的条件
-   使用碎片缓存来避免多次处理相同的字符串

  

## 使用量

将此库添加到您的 Javascript 应用程序中, 代码如下行

```js
const toRegexRange = require('to-regex-range');
```

主要导出是需要两个整数的函数: `min` 价值和 `max` 值(格式化为字符串或数字).

```js
const source = toRegexRange('15', '95');
//=> 1[5-9]|[2-8][0-9]|9[0-5]

const regex = new RegExp(`^${source}$`);
console.log(regex.test('14')); //=> false
console.log(regex.test('50')); //=> true
console.log(regex.test('94')); //=> true
console.log(regex.test('96')); //=> false
```

## 选项

### 选项

**类型**数字 : `boolean`

**聋人**数字 : `undefined`

当存在一个以上 regex 条件时, 将返回的值围入括号中 。 在动态生成范围时有用.

```js
console.log(toRegexRange('-10', '10'));
//=> -[1-9]|-?10|[0-9]

console.log(toRegexRange('-10', '10', { capture: true }));
//=> (-[1-9]|-?10|[0-9])
```

### 选项

**类型**数字 : `boolean`

**聋人**数字 : `undefined`

使用 regex 的快手 `[0-9]`数字 :

```js
console.log(toRegexRange('0', '999999'));
//=> [0-9]|[1-9][0-9]{1,5}

console.log(toRegexRange('0', '999999', { shorthand: true }));
//=> \d|[1-9]\d{1,5}
```

### 选项.relaxZeros

**类型**数字 : `boolean`

**默认**数字 : `true`

当区域为零加值时,此选项可以放松对正0的匹配.

```js
const source = toRegexRange('-0010', '0010');
const regex = new RegExp(`^${source}$`);
console.log(regex.test('-10')); //=> true
console.log(regex.test('-010')); //=> true
console.log(regex.test('-0010')); //=> true
console.log(regex.test('10')); //=> true
console.log(regex.test('010')); //=> true
console.log(regex.test('0010')); //=> true
```

何时 `relaxZeros` 错误, 匹配严格 :

```js
const source = toRegexRange('-0010', '0010', { relaxZeros: false });
const regex = new RegExp(`^${source}$`);
console.log(regex.test('-10')); //=> false
console.log(regex.test('-010')); //=> false
console.log(regex.test('-0010')); //=> true
console.log(regex.test('10')); //=> false
console.log(regex.test('010')); //=> false
console.log(regex.test('0010')); //=> true
```

## 实例

| **范围** | **结果** | **编译时间** |
| --- | --- | --- |
| `toRegexRange(-10, 10)` | `-[1-9]|-?10|[0-9]` | _132μs( 132μs)_ |
| `toRegexRange(-100, -10)` | `-1[0-9]|-[2-9][0-9]|-100` | _50μs_ |
| `toRegexRange(-100, 100)` | `-[1-9]|-?[1-9][0-9]|-?100|[0-9]` | _42 μs (42μs) (单位:千米)_ |
| `toRegexRange(001, 100)` | `0{0,2}[1-9]|0?[1-9][0-9]|100` | _109微克_ |
| `toRegexRange(001, 555)` | `0{0,2}[1-9]|0?[1-9][0-9]|[1-4][0-9]{2}|5[0-4][0-9]|55[0-5]` | _51 μs (单位:千米)_ |
| `toRegexRange(0010, 1000)` | `0{0,2}1[0-9]|0{0,2}[2-9][0-9]|0?[1-9][0-9]{2}|1000` | _31 微秒( 31 微秒)_ |
| `toRegexRange(1, 50)` | `[1-9]|[1-4][0-9]|50` | _24 μs (24μs) (20μs)_ |
| `toRegexRange(1, 55)` | `[1-9]|[1-4][0-9]|5[0-5]` | _23μs( 23μs) (23μs) (23μs)_ |
| `toRegexRange(1, 555)` | `[1-9]|[1-9][0-9]|[1-4][0-9]{2}|5[0-4][0-9]|55[0-5]` | _30 μs (30μs) (30μs)_ |
| `toRegexRange(1, 5555)` | `[1-9]|[1-9][0-9]{1,2}|[1-4][0-9]{3}|5[0-4][0-9]{2}|55[0-4][0-9]|555[0-5]` | _43 μs (单位:千米)_ |
| `toRegexRange(111, 555)` | `11[1-9]|1[2-9][0-9]|[2-4][0-9]{2}|5[0-4][0-9]|55[0-5]` | _38 μs (38μs) (38μs) (38μs) (38μs)_ |
| `toRegexRange(29, 51)` | `29|[34][0-9]|5[01]` | _24 μs (24μs) (20μs)_ |
| `toRegexRange(31, 877)` | `3[1-9]|[4-9][0-9]|[1-7][0-9]{2}|8[0-6][0-9]|87[0-7]` | _32 μs (单位:千兆克)_ |
| `toRegexRange(5, 5)` | `5` | _8μs (8μs) (8μs) (8μs)_ |
| `toRegexRange(5, 6)` | `5|6` | _11 μs (11μs) (11μs)_ |
| `toRegexRange(1, 2)` | `1|2` | _6 微秒( 6 微秒)_ |
| `toRegexRange(1, 5)` | `[1-5]` | _15μs (15μs) (15μs)_ |
| `toRegexRange(1, 10)` | `[1-9]|10` | _22 微米( 22 微米)_ |
| `toRegexRange(1, 100)` | `[1-9]|[1-9][0-9]|100` | _25微克_ |
| `toRegexRange(1, 1000)` | `[1-9]|[1-9][0-9]{1,2}|1000` | _31 微秒( 31 微秒)_ |
| `toRegexRange(1, 10000)` | `[1-9]|[1-9][0-9]{1,3}|10000` | _34μs (34μs) (34μs) (34μs)_ |
| `toRegexRange(1, 100000)` | `[1-9]|[1-9][0-9]{1,4}|100000` | _36微克_ |
| `toRegexRange(1, 1000000)` | `[1-9]|[1-9][0-9]{1,5}|1000000` | _42 μs (42μs) (单位:千米)_ |
| `toRegexRange(1, 10000000)` | `[1-9]|[1-9][0-9]{1,6}|10000000` | _42 μs (42μs) (单位:千米)_ |

## 抬头!

**辩论顺序**

当 `min` 大于 `max`,值将被翻转以创建有效区域:

```js
toRegexRange('51', '29');
```

实际翻转为:

```js
toRegexRange('29', '51');
//=> 29|[3-4][0-9]|5[0-1]
```

**步骤/递增**

此库不支持步骤( increments). 欢迎增加支持.

## 历史

### v2.0.0 - 2017-04-21 (英语)

**新特点**

添加零铺设的支持 !

### v1.0.0 (韩语)

**优化**

重复范围现在使用限定词进行分组。 rocessing时间大致相同,但生成的regex要小得多,这应导致更快的匹配.

## 归属

被蟒蛇图书馆所启发 [区域正则](https://github.com/dimka665/range-regex)。 。 。 .

## 关于

**捐款**

拉出请求和星星总是受欢迎的. 对于错误和特性请求, [请创建一个问题](https://npmcn.com/package/issues/new)。 。 。 .

**运行测试**

运行和审查单元测试是熟悉图书馆及其API的好办法。 您可以使用以下命令安装依赖性并运行测试:

```sh
$ npm install && npm test
```
**大楼文件**

_(此工程的 readme.md 由 [动词](https://github.com/verbose/verb-generate-readme)请不要直接编辑读取器。 读取器的任何改动必须在 [动词 md](https://npmcn.com/package/%40bluelovers/to-regex-range2/.verb.md) 读取我的模板。 )_

要生成读取, 请运行以下命令 :

```sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
```

### 相关项目

您可能也对这些项目感兴趣:

-   [扩展范围](https://www.npmjs.com/package/expand-range):快速地,相撞的扩展范围. 扩展数字或字母、大写或小写的范围。 用过.. [更多](https://github.com/jonschlinkert/expand-range) | [主页](https://github.com/jonschlinkert/expand-range "Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. Used by micromatch.")
-   [填充范围](https://www.npmjs.com/package/fill-range): 填入一系列数字或字母,可选通过递增或 `step` 对.. [更多](https://github.com/jonschlinkert/fill-range) | [主页](https://github.com/jonschlinkert/fill-range "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`")
-   [微比对](https://www.npmjs.com/package/micromatch): 为javascript/node.js进行格洛布匹配. 一个倒置替换和更快的替代微型比赛和多场比赛 [主页](https://github.com/micromatch/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.")
-   [重复元素](https://www.npmjs.com/package/repeat-element):通过重复给定值n次来创建数组. | [主页](https://github.com/jonschlinkert/repeat-element "Create an array by repeating the given value n times.")
-   [重复字符串](https://www.npmjs.com/package/repeat-string):重复给定的字符串n次. 重复字符串的快速执行 。 @ info: whatsthis [主页](https://github.com/jonschlinkert/repeat-string "Repeat the given string n times. Fastest implementation for repeating a string.")

### 贡献者

| **提交** | **贡献者** |  
| -- -- -- -- -- -- --  
| 63 | [扬施林克特](https://github.com/jonschlinkert) |  
| 3 | [鸽子](https://github.com/doowb) |  
|2| [现实](https://github.com/realityking) |

### 作者

**乔恩·斯林克特**

-   [GitHub 配置文件](https://github.com/jonschlinkert)
-   [推特简介](https://twitter.com/jonschlinkert)
-   [链接到配置文件](https://linkedin.com/in/jonschlinkert)

请考虑支持我在帕特里昂,或 [启动您的 Patreon 页面](https://patreon.com/invite/bxpbvm)来啊!

[![](https://c5.patreon.com/external/logo/become_a_patron_button@2x.png)](https://www.patreon.com/jonschlinkert)

### 许可证

版权所有: 2019, [乔恩·斯林克特](https://github.com/jonschlinkert)。 。 。 . 释放 [MIT 许可证](https://npmcn.com/package/%40bluelovers/to-regex-range2/LICENSE)。 。 。 .

* * *

_此文件由 [动词基因读取器](https://github.com/verbose/verb-generate-readme),v0.8.0,于2019年4月07日查阅._

## 常见问题

### @bluelovers/to-regex-range2 是什么？

传递2个数字,获得匹配范围的Regex相容源字符串\. 对278万多条试验断言进行了验证\.

### 如何安装 @bluelovers/to-regex-range2？

在项目目录运行 npm install @bluelovers/to-regex-range2，或使用 pnpm add / yarn add / bun add。

### @bluelovers/to-regex-range2 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @bluelovers/to-regex-range2 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @bluelovers/to-regex-range2 需要什么版本的 Node\.js？

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

### @bluelovers/to-regex-range2 可以商用吗？

@bluelovers/to-regex-range2 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @bluelovers/to-regex-range2 的下载量有多少？

根据 npm 官方下载统计，@bluelovers/to-regex-range2 在 2026/10/09 – 2026/11/07 这 30 天内被下载 71,902 次，日均约 2,397 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @bluelovers/to-regex-range2 还在维护吗？

最新版本 5\.0\.1 发布于 2022/09/20（4 年前）；至今共发布 1 个版本，其中过去 12 个月发布了 0 个；首次发布于 2022/09/20。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

