eslint-plugin-regexp

eslint-plugin-regexp

ESLint插件助力正则表达式优化与错误预防

eslint-plugin-regexp是一款专注于正则表达式检查和规范的ESLint插件。它包含80多条规则,可检测错误用法、统一代码风格、提升性能并给出优化建议。该插件兼容最新版ESLint和Node.js,支持npm快速安装。

eslint-plugin-regexp正则表达式ESLint插件代码规范JavaScriptGithub开源项目

简介

eslint-plugin-regexp是一个用于查找正则表达式错误和违反正则表达式风格指南的ESLint插件。

<!--PACKAGE_STATUS_START-->

NPM许可证 NPM版本 NPM下载量 NPM下载量 NPM下载量 NPM下载量 NPM下载量 构建状态 覆盖率状态

<!--PACKAGE_STATUS_END-->

:name_badge: 特性

这个ESLint插件提供了与更好地使用正则表达式相关的检查规则,帮助您避免在使用正则表达式时出现问题。

  • 发现正则表达式的错误用法,并提供提示。
  • 强制执行一致的正则表达式风格。
  • 提供编写优化正则表达式的提示。
  • 80条针对正则表达式语法和特性的插件规则。

您可以在在线演示中进行检查。

<!--DOCS_IGNORE_START-->

:book: 文档

请查看文档

:cd: 安装

npm install --save-dev eslint eslint-plugin-regexp

要求

  • ESLint v8.44.0及以上版本
  • Node.js v18.x, v20.x及以上版本
<!--DOCS_IGNORE_END-->

:book: 使用方法

<!--USAGE_SECTION_START-->

在您的eslint.config.js.eslintrc配置文件的plugins部分添加regexp(您可以省略eslint-plugin-前缀),然后使用两种可用配置之一(recommendedall)或配置您想要的规则:

推荐配置(新配置)

plugin.configs["flat/recommended"]配置启用了一部分规则,这些规则对大多数用户来说应该是最有用的。 更多详情请参见lib/configs/rules/recommended.ts

// eslint.config.js import * as regexpPlugin from "eslint-plugin-regexp" export default [ regexpPlugin.configs["flat/recommended"], ];

推荐配置(旧配置)

plugin:regexp/recommended配置启用了一部分规则,这些规则对大多数用户来说应该是最有用的。 更多详情请参见lib/configs/rules/recommended.ts

// .eslintrc.js module.exports = { "plugins": [ "regexp" ], "extends": [ // 在这里添加更多通用规则集,例如: // 'eslint:recommended', "plugin:regexp/recommended" ] }

高级配置

覆盖/添加特定规则配置。另请参见:http://eslint.org/docs/user-guide/configuring

// eslint.config.js import * as regexpPlugin from "eslint-plugin-regexp" export default [ { plugins: { regexp: regexpPlugin }, rules: { // 在此处覆盖/添加规则设置,例如: "regexp/rule-name": "error" } } ];
// .eslintrc.js module.exports = { "plugins": [ "regexp" ], "rules": { // 在此处覆盖/添加规则设置,例如: "regexp/rule-name": "error" } }

使用全部配置

plugin.configs["flat/all"] / plugin:regexp/all配置启用所有规则。它适用于测试,而不是生产环境,因为它会随着插件的每个小版本和主版本而变化。使用时请自行承担风险。 更多详情请参见lib/configs/rules/all.ts

<!--USAGE_SECTION_END-->

:white_check_mark: 规则

<!-- begin auto-generated rules list -->

💼 表示在配置中启用。
⚠️ 表示在配置中设置为警告。
🟢 表示在flat/recommended配置中设置。
🔵 表示在recommended配置中设置。
🔧 表示可以通过--fix CLI选项自动修复。
💡 表示可以通过编辑器建议手动修复。

可能的错误

名称描述💼⚠️🔧💡
no-contradiction-with-assertion禁止与断言相矛盾的元素🟢 🔵💡
no-control-character禁止控制字符💡
no-dupe-disjunctions禁止重复的分支🟢 🔵💡
no-empty-alternative禁止没有元素的分支🟢 🔵💡
no-empty-capturing-group禁止捕获空内容的捕获组🟢 🔵
no-empty-character-class禁止不匹配任何字符的字符类🟢 🔵
no-empty-group禁止空组🟢 🔵
no-empty-lookarounds-assertion禁止空的先行断言或后行断言🟢 🔵
no-escape-backspace禁止转义退格符([\b]🟢 🔵💡
no-invalid-regexp禁止在 RegExp 构造函数中使用无效的正则表达式字符串🟢 🔵
no-lazy-ends禁止在表达式末尾使用惰性量词🟢 🔵💡
no-misleading-capturing-group禁止行为不符合预期的捕获组🟢 🔵💡
no-misleading-unicode-character禁止在字符类和量词中使用多码点字符🟢 🔵🔧💡
no-missing-g-flag禁止在用于 String#matchAllString#replaceAll 的模式中缺少 g 标志🟢 🔵🔧
no-optional-assertion禁止可选断言🟢 🔵
no-potentially-useless-backreference禁止引用可能未匹配的组的反向引用🟢 🔵
no-super-linear-backtracking禁止指数级和多项式回溯🟢 🔵🔧
no-super-linear-move禁止导致二次方移动的量词
no-useless-assertions禁止已知总是接受(或拒绝)的断言🟢 🔵💡
no-useless-backreference禁止正则表达式中无用的反向引用🟢 🔵
no-useless-dollar-replacements禁止替换字符串中无用的 $ 替换🟢 🔵
strict禁止不严格有效的正则表达式🟢 🔵🔧💡

最佳实践

名称描述💼⚠️🔧💡
confusing-quantifier禁止使用容易混淆的量词🟢 🔵
control-character-escape强制控制字符的一致转义🟢 🔵🔧
negation强制对否定使用转义🟢 🔵🔧
no-dupe-characters-character-class禁止在正则表达式字符类中使用重复字符🟢 🔵🔧
no-empty-string-literal禁止在字符类中使用空字符串字面量🟢 🔵
no-extra-lookaround-assertions禁止不必要的嵌套环视断言🟢 🔵🔧
no-invisible-character禁止使用不可见的原始字符🟢 🔵🔧
no-legacy-features禁止使用遗留的正则表达式特性🟢 🔵
no-non-standard-flag禁止使用非标准标志🟢 🔵
no-obscure-range禁止使用晦涩的字符范围🟢 🔵
no-octal禁止使用八进制转义序列💡
no-standalone-backslash禁止使用独立的反斜杠(\
no-trivially-nested-assertion禁止使用简单嵌套的断言🟢 🔵🔧
no-trivially-nested-quantifier禁止使用可以重写为单个量词的嵌套量词🟢 🔵🔧
no-unused-capturing-group禁止未使用的捕获组🟢 🔵🔧💡
no-useless-character-class禁止只有一个字符的字符类🟢 🔵🔧
no-useless-flag禁止不必要的正则表达式标志🟢 🔵🔧
no-useless-lazy禁止不必要的非贪婪量词🟢 🔵🔧
no-useless-quantifier禁止可以移除的量词🟢 🔵🔧💡
no-useless-range禁止不必要的字符范围🟢 🔵🔧
no-useless-set-operand禁止表达式字符类中不必要的元素🟢 🔵🔧
no-useless-string-literal禁止在 \q{...} 中使用单个字符的字符串分离🟢 🔵🔧
no-useless-two-nums-quantifier禁止不必要的 {n,m} 量词🟢 🔵🔧
no-zero-quantifier禁止最大值为零的量词🟢 🔵💡
optimal-lookaround-quantifier禁止环视的备选项以非常量量词结尾🟢 🔵💡
optimal-quantifier-concatenation要求连接的量词使用最优量词🟢 🔵🔧
prefer-escape-replacement-dollar-char强制转义替换字符串中的 $ 字符($$
prefer-predefined-assertion优先使用预定义断言而非等效的环视🟢 🔵🔧
prefer-quantifier强制使用量词🔧
prefer-range强制使用字符类范围🟢 🔵🔧
prefer-regexp-exec如果未提供全局标志,强制使用 RegExp#exec 而不是 String#match
prefer-regexp-test强制使用 RegExp#test 而不是 String#matchRegExp#exec🔧
prefer-set-operation优先使用字符类集合操作而不是前瞻/后顾断言🟢 🔵🔧
require-unicode-regexp强制使用 u 标志🔧
require-unicode-sets-regexp强制使用 v 标志🔧
simplify-set-operations要求简化集合操作🟢 🔵🔧
sort-alternatives如果顺序无关紧要,则对备选项进行排序🔧
use-ignore-case如果能简化模式,则使用 i 标志🟢 🔵🔧

风格问题

名称描述💼⚠️🔧💡
grapheme-string-literal强制在字符串字面量中使用单个字素
hexadecimal-escape强制一致使用十六进制转义🔧
letter-case强制使用你喜欢的大小写🔧
match-any强制使用匹配任意字符的风格🟢 🔵🔧
no-useless-escape禁止在正则表达式中使用不必要的转义字符🟢 🔵🔧
no-useless-non-capturing-group禁止不必要的非捕获组🟢 🔵🔧
prefer-character-class强制使用字符类🟢 🔵🔧
prefer-d强制使用 \d🟢 🔵🔧
prefer-lookaround优先使用前瞻/后顾而不是不进行替换的捕获组🔧
prefer-named-backreference强制使用命名的反向引用🔧
prefer-named-capture-group强制使用命名的捕获组
prefer-named-replacement强制使用命名替换🔧
prefer-plus-quantifier强制使用 + 量词🟢 🔵🔧
prefer-question-quantifier强制使用 ? 量词🟢 🔵🔧
prefer-result-array-groups强制使用结果数组的 groups🔧
prefer-star-quantifier强制使用 * 量词🟢 🔵🔧
prefer-unicode-codepoint-escapes强制使用 Unicode 码点转义🟢 🔵🔧
prefer-w强制使用 \w🟢 🔵🔧
sort-character-class-elements强制字符类中元素的顺序🔧
sort-flags要求正则表达式标志按顺序排序🟢 🔵🔧
unicode-escape强制一致使用 Unicode 转义或 Unicode 码点转义🔧
unicode-property强制 Unicode 属性命名的一致性🔧
<!-- 自动生成的规则列表结束 --> <!--REMOVED_RULES_START-->

已移除

  • :no_entry: 这些规则在之前的主要版本中被移除,此前它们已被弃用一段时间。
规则 ID替代规则移除版本
no-assertion-capturing-groupregexp/no-empty-capturing-groupv2.0.0
no-useless-exactly-quantifierregexp/no-useless-quantifier, regexp/no-zero-quantifierv2.0.0
no-useless-non-greedyregexp/no-useless-lazyv2.0.0
order-in-character-classregexp/sort-character-class-elementsv2.0.0
prefer-tregexp/control-character-escapev2.0.0
<!--REMOVED_RULES_END-->

:gear: 设置

请参阅 设置

<!--DOCS_IGNORE_START-->

:traffic_light: 语义化版本控制策略

eslint-plugin-regexp 遵循 语义化版本控制ESLint 的语义化版本控制策略

:beers: 贡献

欢迎贡献!

请使用 GitHub 的 Issues/PRs。

参见 CONTRIBUTING.md

开发工具

  • npm test 运行测试并测量覆盖率。
  • npm run update 运行以更新 readme 和推荐配置。
  • npm run new [新规则名称] 运行以创建新规则所需的文件。
  • npm run docs:watch 在本地启动网站。

:lock: 许可证

有关许可权利和限制(MIT),请参阅 LICENSE 文件。

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多