gpt4 book ai didi

Java Reg 接受不在 [0-9]*[ -/]{0,1}[0-9]* 中的 * - 这是一个错误吗?

转载 作者:行者123 更新时间:2023-12-01 06:50:31 24 4
gpt4 key购买 nike

以下正则表达式 [0-9]*[ -/]{0,1}[0-9]*匹配例如1*2 .

* 没有在我的正则表达式中定义,也不是有意的;之前的空格 - 不需要转义(据我所知)

如果我只使用 [ -/] 的两个字符, 1*2不匹配。

当我更改订单时,例如至[0-9]*[-/ ]{0,1}[0-9]* , 1*2不匹配(如预期)。

我错过了什么还是这是一个错误?

我在 Java 7 和 http://www.regexplanet.com/advanced/java/index.html 上有这种行为

更新RegEx 用于 Bean Validation @Pattern(regexp = "[0-9][ -/]{0,1}[0-9]")。

最佳答案

[ -/] 是字符类,在字符类中,- 是范围运算符。 “从‘空格’到‘斜杠’字符范围内的任何字符(含)”。

这意味着它(基本上)使用 ASCII 表来匹配字符 [space]!"# $ 等...直至 /

但是,范围仅在正方向上起作用:从低 ASCII 代码到高 ASCII 代码。当您从高到低时,范围不适用,并且它只查找 3 个字符:[space]dashslash.

例如在一个更容易阅读的示例中:

ascending:    [b-g] -> matches 'b', 'c, 'd', 'e', 'f', or 'g'
descending: [g-b] -> matches ONLY 'g', '-', or 'b'

关于Java Reg 接受不在 [0-9]*[ -/]{0,1}[0-9]* 中的 * - 这是一个错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32098297/

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