【问题标题】:Regex for -1 to 999 but can accept blank-1 到 999 的正则表达式,但可以接受空白
【发布时间】:2020-03-24 15:28:05
【问题描述】:

-1 到 999 的正则表达式,但可以接受空白

我已经创建了这个 ^(?:^[0-9]+)?$ 。此正则表达式接受正数和空白值。如何将其限制为 3 位数并允许它也接受 -1。

我尝试在 Java 中使用 @max 和 @min 注释。但他们不允许空白字段。我正在使用注释@pattern 将传入号码与正则表达式匹配

【问题讨论】:

  • 为什么要为此使用正则表达式?
  • 这个正则表达式可以接受 -1 、空或 0-999 。这是业务需求
  • @HeenaMittal 所有这三个都可以在没有正则表达式的情况下实现。
  • 为了将来参考,最好描述迫使您使用正则表达式(或任何其他工具)的技术限制。如果您不这样做,您将获得有关使用与您的问题无关的完全不同工具的问题和答案。
  • @Torben 或以更好的方式执行业务需求的答案;在这种情况下,Bean Validation 是可能的选择。

标签: java regex


【解决方案1】:

我会使用:

^(?:-1|[0-9]{1,3})$

Demo

但实际上,如果我使用编程语言,我不会使用这个正则表达式。相反,此要求将更容易通过范围检查来处理,例如在 Java 中:

int input = 10;
if (input >= -1 && input <= 999) {
    System.out.println("MATCH");
}

如果您还想允许空白,则只需在交替中添加一个空大小写:

^(?:-1|[0-9]{1,3}|)$

【讨论】:

  • 我尝试使用 @max 和 @min 但如果字段为空,它们会抛出错误
  • @HeenaMittal 所以当问题说 "-1 到 999 但不是空白" 你实际上的意思是,"-1 到 999 空白”,对吧?如果是这样,请编辑问题以澄清这一点。
  • 这个正则表达式将如何从 -1 变为 900 ?
  • @HeenaMittal 请不要更改问题并要求新的答案。你的问题从一开始就不够清楚,人们一直在给你建议,但你对这些建议的反应不是很好。您确实收到了原始问题的答案。如果它解决了你的问题,你应该接受它,然后,如果你有不同的问题,你可以问一个新的问题,但在做你自己的研究之后。
  • @Heena 这是你的另一个正则表达式:^(?:-1|[0-9]{1,2}|[1-8][0-9]{2}|900|)$
猜你喜欢
  • 2022-07-01
  • 2018-08-16
  • 2013-07-26
  • 1970-01-01
  • 2017-06-29
  • 2022-08-18
  • 1970-01-01
  • 2023-03-24
  • 2016-02-29
相关资源
最近更新 更多