阿尔克雷格斯
倒车替换 new RegExp() 有类型
使用量
这个 regex 函数创建一个 Regex 类型 .test(), (中文(简体) ), .exec() 此外,静态地从本地JS语法中解析:
import { regex } from "arkregex"
const ok = regex("^ok$", "i")
// Regex<"ok" | "oK" | "Ok" | "OK", { flags: "i" }>
const semver = regex("^(\\d*)\\.(\\d*)\\.(\\d*)$")
// Regex<`${number}.${number}.${number}`, { captures: [`${number}`, `${number}`, `${number}`] }>
const email = regex("^(?<name>\\w+)@(?<domain>\\w+\\.\\w+)$")
// Regex<`${string}@${string}.${string}`, { names: { name: string; domain: `${string}.${string}`; }; ...>
你只需要开始 pnpm install arkregex (或您所选择的软件包管理器的等同内容)
以 TS 5.9+ 成绩最佳
特征
- 类型: 引用您已有正则表达式的字符串类型, 包括位置和命名的抓取
- 均等: 支持100% 特性 允许的
new RegExp() - 安全问题: 语法错误, 如引用一个不存在的组, 现在是输入错误
- 0 运行时间: 改进类型安全而不影响捆绑大小
财务问题
为什么不是一些模式 像 [a-Z] 更准确的推断?
构造这些类型的表达式的字符串字元类型是组合的,如果我们推断字符范围是这样的字元字元,会很快地爆炸.
我们试图在性能和精确度之间取得平衡 同时保证推断出的类型 最不准确 永远不正确.
为什么它不工作 我的大规模RegExp?
如果你的表达式特别长或复杂,TypeScript将无法推断出它.
如果你的类型开始减慢 或者你看到可怕的 Type is excessively deep...,您可以用手动键入您的表达式 regex.as数字 :
const complexPattern = regex.as<`pattern-${string}`, { captures: [string] }>(
"very-long-complex-expression-here"
)
坚固吗?
arkregex 类型是 广泛测试 财务报告和审定财务报表 基准 使用 证明。 。 。 .
如果其他的FAQ没有做到你所期望的, 请不要犹豫 创建问题。 。 。 .
我怎么才能用语法强调 regex? 吗?
这个 ArkType 扩展名 可安装以添加语法加亮到 regex 打电话.