Project Icon

eslint-plugin-regexp

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

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

简介

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

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

:name_badge: 特性

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

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

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

:book: 文档

请查看文档

:cd: 安装

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

要求

  • ESLint v8.44.0及以上版本
  • Node.js v18.x, v20.x及以上版本

:book: 使用方法

在您的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

:white_check_mark: 规则

💼 表示在配置中启用。
⚠️ 表示在配置中设置为警告。
🟢 表示在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 属性命名的一致性🔧

已移除

  • :no_entry: 这些规则在之前的主要版本中被移除,此前它们已被弃用一段时间。

:gear: 设置

请参阅 设置

: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 文件。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号