PhpStorm 2021.3 Help

RegExp 中的代码检查

本主题列出了 RegExp 中可用的所有 PhpStorm 代码检查。

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

检查

描述

默认严重性

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

在 RegExp 中报告匿名捕获组和数字反向引用。这些仅在 RegExp 方言支持命名组和命名组引用时才报告。命名组和命名后引用提高了代码的可读性,建议改用。当不需要捕获时,通过使用非捕获组(即(?:xxx)代替(xxx).

例子:
(\d\d\d\d)\1

更好的正则表达式模式可能如下所示:
(?<四边形>\d\d\d\d)\k<四边形>

2017.2新增

已禁用

在意外位置开始或结束锚点

报告^\A锚点不在模式的开头和$,\Z\z锚点不在模式的末尾。这些 RegExp 锚在错误的位置会阻止模式匹配任何内容。在^and$锚的情况下,很可能是字面意思,而逃逸被遗忘了。

例子:
(价格 10 美元)

2018.1新增

警告 警告

连续的空格

报告 RegExp 中的多个连续空格。因为默认情况下空格是不可见的,所以很难看出需要多少空格。通过用单个空格和一个计数的量词替换连续的空格,可以使 RegExp 更加清晰。

例子:
( )

应用快速修复后:
({5})

2017.1新增

警告 警告

交替重复分支

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

例子:
(阿尔法|布拉沃|查理|阿尔法)

应用快速修复后:
(阿尔法|布拉沃|查理)

2017.1新增

警告 警告

字符类中的重复字符

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

例子:
[aabc]

应用快速修复后:
[ABC]

警告 警告

交替的空分支

在 RegExp 交替中报告空分支。空分支只会匹配空字符串,在大多数情况下,这不是我们想要的。此检查不会在交替开始或结束时报告单个空分支。

例子:
(阿尔法||布拉沃)

应用快速修复后:
(阿尔法|布拉沃)

2017.2新增

警告 警告

转义元字符

报告转义元字符。一些 RegExp 编码样式指定元字符应放置在字符类中,以使正则表达式更易于理解。此检查不会警告元字符[,]^,因为它们需要在字符类中进行额外的转义。

例子:
\d+\.\d+

应用快速修复后:
\d+[.]\d+

2017.1新增

信息没有高亮,只有修复

八进制转义

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

例子:
\07

应用快速修复后:
\x07

2017.1新增

信息没有高亮,只有修复

冗余字符转义

报告可以用未转义字符替换而不改变含义的字符转义。请注意,在字符类的方括号内,许多转义是不必要的,而这些转义在字符类之外是必需的。

例子:
\-\;[\.]

应用快速修复后:
-;[.]

2017.3新增

警告 警告

冗余嵌套字符类

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

例子:
[ac[xz]]

应用快速修复后:
[a-cx-z]

2020.2 新增

警告 警告

单字交替

报告 RegExp 中的单个字符交替。改用字符类更简单。这也可以提供更好的匹配性能。

例子:
a|b|c|d

应用快速修复后:
[A B C D]

2017.1新增

警告 警告

不必要的非捕获组

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

例子:
大家冷静点,(?:this) 是抢劫!

应用快速修复后:
大家冷静点,这是抢劫!

2021.1 中的新功能

警告 警告

最后修改:2022 年 2 月 11 日