JetBrains Rider 2025.2 Help

RegExp 中的代码检查

本主题列出了 RegExp 中所有 JetBrains Rider 代码检查

您可以在 编辑器 | 检查设置 | 检查严重性 | 其他语言 设置页面  Ctrl+Alt+S 上切换特定检查或更改其严重性级别。

检查

描述

默认严重性

匿名捕获组或数字反向引用

报告 RegExp 中的匿名捕获组和数字反向引用。 仅当 RegExp 方言支持命名组和命名组引用时才会报告这些内容。 命名组和命名反向引用可以提高代码可读性,并建议使用它们。 当不需要捕获时,通过使用非捕获组(即 (?:xxx) 而不是 (xxx) )可以提高匹配性能并减少内存使用。

示例:

(\d\d\d\d)\1

更好的正则表达式模式可能如下所示:

(?<quad>\d\d\d\d)\k<quad>

2017.2 新增

已禁用

意外位置的起始或结束锚点

报告在模式开头未出现的 ^\A 锚点,以及在模式结尾未出现的 $\Z\z 锚点。 在错误的位置,这些 RegExp 锚点会阻止模式匹配任何内容。 对于 ^$ 锚点,很可能是想表示字面字符但忘记了转义。

示例:

(Price $10)

2018.1 中新增

警告 警告

连续空格

报告 RegExp 中的多个连续空格。 由于空格默认不可见,因此很难看清需要多少个空格。 通过将连续空格替换为单个空格和计数量词,可以使 RegExp 更加清晰。

示例:

( )

应用快速修复后:

( {5})

2017.1 中的新功能

警告 警告

自定义 RegExp 检查

自定义正则表达式检查

警告 警告

替换分支中的重复项

报告 RegExp 替换分支中的重复项。 重复的分支会减慢匹配速度并使表达式的意图变得模糊。

示例:

(alpha|bravo|charlie|alpha)

应用快速修复后:

(alpha|bravo|charlie)

2017.1 中的新功能

警告 警告

字符类中的重复字符

报告 RegExp 字符类中的重复字符。 重复字符是不必要的,可以在不改变正则表达式语义的情况下删除。

示例:

[aabc]

应用快速修复后:

[abc]

警告 警告

交替中的空分支

报告 RegExp 交替中的空分支。 空分支只会匹配空字符串,在大多数情况下,这并不是所期望的。 此检查不会报告交替开头或结尾的单个空分支。

示例:

(alpha||bravo)

应用快速修复后:

(alpha|bravo)

2017.2 新增

警告 警告

转义的元字符

报告转义的元字符。 某些 RegExp 编码风格规定元字符应放在字符类中,以使正则表达式更易于理解。 此检查不会警告元字符 []^ ,因为这些字符在字符类中需要额外的转义。

示例:

\d+\.\d+

应用快速修复后:

\d+[.]\d+

2017.1 中的新功能

信息 无高亮,仅修复

八进制转义

报告容易与反向引用混淆的八进制转义。 使用十六进制转义以避免混淆。

示例:

\07

应用快速修复后:

\x07

2017.1 中的新功能

信息 无高亮,仅修复

冗余的 '\d'、'[:digit:]' 或 '\D' 类元素

报告在一个类中与 \w[:word:]\D\W )一起使用的冗余 \d[:digit:] ,这些可以被移除。

示例:

[\w\d]

应用快速修复后:

[\w]

2022.2 新增

弱警告 弱警告

冗余的字符转义

报告可以用未转义字符替换且保持含义的冗余字符转义序列。 许多在字符类外部必要的转义序列在字符类的方括号 [] 内是冗余的。

尽管在某些方言(如 JavaScript、Python 等)中,字符类外部未转义的左大括号 { 是允许的,但这可能会引起混淆并降低模式的可移植性,因为某些方言要求将大括号作为字符转义。 因此,此检查不会报告转义的左大括号。

示例:

\-\;[\.]

应用快速修复后:

-;[.]

忽略转义的右括号 '}' 和 ']' 选项指定是否在 RegExp 方言允许未转义的情况下报告字符类外部的 \}\]

2017.3 新增

警告 警告

冗余的嵌套字符类

报告不必要的嵌套字符类。

示例:

[a-c[x-z]]

应用快速修复后:

[a-cx-z]

2020.2 中的新功能

警告 警告

正则表达式可以简化

报告可以简化的正则表达式。

示例:

[a] xx* [ah-hz]

应用快速修复后:

a x+ [ahz]

2022.1 中的新功能

弱警告 弱警告

单字符交替

报告正则表达式中的单字符交替。 使用字符类会更简单。 这也可能提供更好的匹配性能。

示例:

a|b|c|d

应用快速修复后:

[abcd]

2017.1 中的新功能

警告 警告

可疑的反向引用

报告在运行时无法解析的反向引用。 这意味着反向引用永远无法匹配任何内容。 如果组是在反向引用之后定义的,或者组是在交替的不同分支中定义的,则反向引用将无法解析。

组在其反向引用之后定义的示例:

\1(abc)

组和反向引用在不同分支中的示例:

a(b)c|(xy)\1z

2022.1 中的新功能

警告 警告

不必要的非捕获组

报告对匹配结果没有影响的不必要的非捕获组。

示例:

Everybody be cool, (?:this) is a robbery!

应用快速修复后:

Everybody be cool, this is a robbery!

2021.1 中的新功能

警告 警告

最后修改日期: 2025年 9月 26日