为什么此正则表达式无法匹配 VSCode 搜索和替换中的任何内容?

Why won't this regular expression match anything in VSCode search & replace?

我正在使用 VSCode

演示我选择的搜索选项的屏幕截图:

这是我要使用的表达方式。它适用于其他地方,例如 regexr.com,但不适用于 VSCode...

font\-size\:\s{0,1}\d{2,2}px\;\s{0,1}

这里是 HTML:

https://codepen.io/JashoowellPadderssonn/pen/WNbVVEq

我也试过禁用所有不起作用的扩展。这是我的 VSCode 设置:

https://gist.github.com/CrocodileInAWhileAlligatorLater/409f0d9d179955ff80419a8a4506a09d

您应该只转义需要转义的字符。

使用

font-size:\s?\d{2}px;\s?

请注意 -(此处)、:; 并不特殊,因此不得转义。

原因是正则表达式是now compiled with the u modifier enabling Unicode property classes to work (e.g. \p{L} matches any Unicode letter). Here is a VSCode Github issue考虑用unicode模式的JS正则表达式搜索。 2019年9月3日关闭,2019年10月3日验证

副作用是对转义有更严格的要求

字符 classes、[...] 之外的字符必须转义:.^$*+?()[{(您可以在大多数情况下,不要将其转义,但是,如果您需要查找 { 后跟数字,然后需要 } 转义,请参见 /a\{3}/(匹配 a{3} ) != /a{3}/ - 匹配三个 as), \ и |.

内部字符 classes,这些字符必须始终转义:]\。如果 - 不位于字符 class 的开头或结尾,则必须对其进行转义([-0-9_] = [0-9_-] = [_\-0-9]),并且 ^ 必须在字符 class 开始表示文字 ^ 时进行转义([^0](匹配 0 以外的任何字符)!= [\^0] (匹配 ^0))。参见 What special characters must be escaped in regular expressions?