gpt4 book ai didi

c# - .NET 正则表达式错误 : [x-y] range in reverse order

转载 作者:IT王子 更新时间:2023-10-29 04:05:58 27 4
gpt4 key购买 nike

我正在创建一个正则表达式,到目前为止我已经这样做并尝试过了,

 ^([0][1-9]|1[0-2])[/-.]

我收到以下错误。

      parsing "^([0][1-9]|1[0-2])[/-.]" - [x-y] range in reverse order. 
Description: An unhandled exception occurred during the execution of the current web request.
Please review the stack trace for more information about the error and where it originated in
the code.

Exception Details: System.ArgumentException: parsing "^([0][1-9]|1[0-2])[/-.]" - [x-y] range
in reverse order.

在弄乱了一段时间并试图在我的正则表达式中找到错误之后,我只是将我的正则表达式更改为

  ([0][1-9]|1[0-2])[-/.]  so basically only changed this [/-.] to [-/.]

它奏效了。

然后我尝试了一些其他有效的组合。

   [/-]  [/.]  [/.-]  [/-?]

然后我尝试了一些其他的,但没有用。

   [/-\*]  [/-\+]

显然“-”在某些地方有问题但在其他地方没有问题。 这是一个错误吗?还是我遗漏了什么?

更新

感谢大家指出,如果“-”在中间或者没有被“\”转义,则“-”被假定为范围。

但是,为什么它对 [/-?] 或 [/-\?] 起作用,它真的是在这里定义范围还是按字面意思理解?

最佳答案

不是错误。在一个字符类(由 […] 表示)中,- 字符必须是第一个(我相信有些风格允许第一个或最后一个)如果它被包含为文字。否则它应该表示一个范围,例如 0-9A-Z 甚至 /-.

问题是根据 Unicode,. 出现在 / 之前,因此范围被解释为向后,相当于指定范围 7 -4.

如果您使用了[.-/],我不希望出现解析异常,但您不会得到预期的结果。

关于c# - .NET 正则表达式错误 : [x-y] range in reverse order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7476922/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com