【问题标题】:Regex, positive or negative int not preceding by 0 or minus正则表达式,正或负 int 前面不为 0 或减号
【发布时间】:2018-03-10 01:53:27
【问题描述】:

我想创建一个过滤器来检查输入的值是否是预期的。
允许前面不为零的负数和正数(没有“+”符号)。也允许使用负号。
问题是我可以搜索负数,但我不知道如何添加条件来查找负数。
我尝试过使用前瞻和整个机制,但我失败了。
确定:-、-10、-54、66、0、1
挪威克朗:+、+1、-010、010

【问题讨论】:

  • 向我们展示您尝试过的正则表达式。
  • 另外,为什么只是- 可以?没有意义。
  • @CinCout,因为如果我想输入负数,我需要从“-”开始,我想进行“一个阶段”的比较。显示无效的正则表达式有什么意义?
  • 当你列出你的努力时,社区知道你自己尝试了一些东西,而不仅仅是公然要求我们为你写一些东西(这在 SO 上是题外话)。这也有助于社区了解您对主题/概念的理解,从而为您提供肯定会更有帮助的答案。

标签: regex zero negative-number


【解决方案1】:

那又怎样:

^(?:(?:-?(?:[1-9]\d*)?)|0)$

Regex 101 Demo

解释:

^ start marker
- literally matches - sign
? makes it optional
([1-9]\d*) start by non zero digit followed by optional digits
([1-9]\d*)? the question sign makes it optional
|0 means or a single zero
$ end marker

【讨论】:

  • 单个 0 不匹配。
  • @Wli 哇,很棒的收获......由于匆忙,肯定错过了!谢谢
  • 是的,就是这样。当我看到这个时,我认为这个正则表达式远远超出了我的技能。
【解决方案2】:

下面是正确的工作正则表达式:

^-?(?:[1-9]\d*|0)?$

它将涵盖所有测试用例

【讨论】:

    【解决方案3】:

    使用这个: ^-?(?:(?:[1-9]\d*|0))?$

    Demo

    从可选的- 开始,然后确保第一个数字不是 0,其余数字尽可能多。也只处理0 的特殊情况。

    【讨论】:

      猜你喜欢
      • 2011-03-25
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多