【问题标题】:Regex validation for pattern 20+99模式 20+99 的正则表达式验证
【发布时间】:2016-11-16 07:37:54
【问题描述】:

你好,我的要求是这样的

必需的文本格式 20+99

  1. + 标记左侧的最大允许数量应为 20
  2. 右侧最大数应为 99
  3. 每边应该只允许两个字符

其他允许的格式

  1. 1+1

  2. 0+0

  3. 01+01

我们尝试了以下方法

[0-9]{1,2}([+])[0-9]{1,2}

(^[01][0-9]|20)([+])[0-9]{1,2}

第一种方法的问题是不能将左侧限制为 20,并且每侧允许超过 2 个字符。

第二种方法的问题是它不允许 1+1 或 0+0。 感谢一些支持修改正则表达式以满足我们的要求。

【问题讨论】:

    标签: java regex validation


    【解决方案1】:

    改编自您的第二次尝试:

    ^(?:[01]?[0-9]|20)\+[0-9]{1,2}$
    

    【讨论】:

    • 同上:(^[01][0-9]|^20)([+])[0-9]{1,2}$
    • 这行得通。一些改进:在java中不需要^$(OP可能使用matches())。接下来,使用非捕获组(?:) 而不是捕获组()
    • @Aaron 在 java 代码中使用它时,我不能有 \。使用 ([+]) 有什么问题?
    • @virtualpathum 在 Java (\\+) 中,您必须将反斜杠加倍。 ([+]) 过于冗长,因为它声明了一个字符的字符类并将其包含在一个组中,但它也可以。
    猜你喜欢
    • 1970-01-01
    • 2017-03-03
    • 2015-05-14
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    • 2011-04-30
    • 2019-08-03
    • 2014-09-12
    相关资源
    最近更新 更多