我使用 Verizon Premium 订阅下的终结点创建了 Azure CDN。然后,我登录到 Azure Verizon 平台,向引擎添加新规则。如果 URL 末尾没有扩展名,则会自动添加 .html。在 Azure Verizon 中,它看起来像这样:
但是,如果将 .+\/[^\.]\w+$
替换为 ^.*/[^/.]+$
,它将不起作用同样不知道为什么并且没有出现验证错误。我读完this article后我怀疑这与正则表达式风格有关,但我根本不确定。
最佳答案
当您不确定所使用的正则表达式引擎时,请尝试仅使用最常见的正则表达式结构,例如 .
、*
、[... ]
。因此,请尝试使用 [a-zA-Z0-9_]
,而不是 \w
。
不要转义 [...]
中的任何内容,请注意,为此,您需要将 ]
放在最初的 [
之后(不是 ECMAScript 风格,您必须在字符类中转义 ]
),-
可以放在未转义的字符类的末尾,^
不应该出现在开头。请注意, \
只能在 NFA 正则表达式中转义,在基于 POSIX 的正则表达式中,在方括号表达式内, \
被解析为文字 \
字符: POSIX 括号表达式不支持其中的正则表达式转义。在 [...]
中转义 .
是没有意义的,当以下情况时,[\.]
在 JS ES6 正则表达式中是无效模式使用 u
修饰符编译。所以,写成[^.]
更安全。
正则表达式分隔符仅在某些编程语言中用于定义正则表达式,但在这样的软件中,您只处理字符串模式。因此,/
没有任何特殊之处,不必进行转义。
所以,我会在这里使用以下正则表达式:
.+/[^.][0-9a-zA-Z_]+$
关于regex - Azure Verizon 使用什么正则表达式引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53745515/