@bluelovers/to-regex-range2

中文文档
5.0.1发布于 2022/09/20MITTypeScriptESM + CJS近 30 天下载 7.2万

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

中文使用文档
文档目录20 节
  1. 安装
  2. 方便性
  3. 重度测试
  4. 优化
  5. 使用量
  6. 选项
  7. 选项
  8. 选项
  9. 选项.relaxZeros
  10. 实例
  11. 抬头!
  12. 历史
  13. v2.0.0 - 2017-04-21 (英语)
  14. v1.0.0 (韩语)
  15. 归属
  16. 关于
  17. 相关项目
  18. 贡献者
  19. 作者
  20. 许可证

到登记区域 Donate NPM version NPM monthly downloads NPM total downloads Linux Build Status

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

请考虑跟随这个项目的作者, 乔恩·斯林克特,并考虑主演该项目以显示你的:心:和支持.

安装

安装方式 无数字 :

$ npm install --save to-regex-range
这有什么用?

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

示例

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])/ 好吧,我明白了这一点

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

学多点

如果你有兴趣学习更多 字符类 我个人一直发现 正则表达式。 info 相当有用.

重度测试

截止2019年4月07日,本馆开通运营 >1m 测试断言 对照生成的正则距离 提供野蛮力量 核实结果是否正确.

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

优化

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

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

使用量

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

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

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

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 条件时, 将返回的值围入括号中 。 在动态生成范围时有用.

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]数字 :

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的匹配.

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 错误, 匹配严格 :

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]|-10050μ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]|100109微克
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}|100031 微秒( 31 微秒)
toRegexRange(1, 50)[1-9]|[1-4][0-9]|5024 μ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)58μs (8μs) (8μs) (8μs)
toRegexRange(5, 6)5|611 μs (11μs) (11μs)
toRegexRange(1, 2)1|26 微秒( 6 微秒)
toRegexRange(1, 5)[1-5]15μs (15μs) (15μs)
toRegexRange(1, 10)[1-9]|1022 微米( 22 微米)
toRegexRange(1, 100)[1-9]|[1-9][0-9]|10025微克
toRegexRange(1, 1000)[1-9]|[1-9][0-9]{1,2}|100031 微秒( 31 微秒)
toRegexRange(1, 10000)[1-9]|[1-9][0-9]{1,3}|1000034μs (34μs) (34μs) (34μs)
toRegexRange(1, 100000)[1-9]|[1-9][0-9]{1,4}|10000036微克
toRegexRange(1, 1000000)[1-9]|[1-9][0-9]{1,5}|100000042 μs (42μs) (单位:千米)
toRegexRange(1, 10000000)[1-9]|[1-9][0-9]{1,6}|1000000042 μs (42μs) (单位:千米)

抬头!

辩论顺序

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

toRegexRange('51', '29');

实际翻转为:

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

步骤/递增

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

历史

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

新特点

添加零铺设的支持 !

v1.0.0 (韩语)

优化

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

归属

被蟒蛇图书馆所启发 区域正则。 。 。 .

关于

捐款

拉出请求和星星总是受欢迎的. 对于错误和特性请求, 请创建一个问题。 。 。 .

运行测试

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

$ npm install && npm test
大楼文件

(此工程的 readme.md 由 动词请不要直接编辑读取器。 读取器的任何改动必须在 动词 md 读取我的模板。 )

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

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

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

  • 扩展范围:快速地,相撞的扩展范围. 扩展数字或字母、大写或小写的范围。 用过.. 更多 | 主页
  • 填充范围: 填入一系列数字或字母,可选通过递增或 step 对.. 更多 | 主页
  • 微比对: 为javascript/node.js进行格洛布匹配. 一个倒置替换和更快的替代微型比赛和多场比赛 主页
  • 重复元素:通过重复给定值n次来创建数组. | 主页
  • 重复字符串:重复给定的字符串n次. 重复字符串的快速执行 。 @ info: whatsthis 主页

贡献者

| 提交 | 贡献者 |
| -- -- -- -- -- -- --
| 63 | 扬施林克特 |
| 3 | 鸽子 |
|2| 现实 |

作者

乔恩·斯林克特

请考虑支持我在帕特里昂,或 启动您的 Patreon 页面来啊!

许可证

版权所有: 2019, 乔恩·斯林克特。 。 。 . 释放 MIT 许可证。 。 。 .


此文件由 动词基因读取器,v0.8.0,于2019年4月07日查阅.

版本与发布记录

@bluelovers/to-regex-range2 共发布 1 个版本,首次发布于 2022/09/20;过去 12 个月发布了 0 个版本。

版本发布日期距今
5.0.1latest2022/09/204 年前

关于 @bluelovers/to-regex-range2 的常见问题

@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 和提交记录判断。