【问题标题】:regex for 0 to 2,000,000,000 [closed]0到2,000,000,000的正则表达式[关闭]
【发布时间】:2017-10-05 10:04:40
【问题描述】:

我有一个匹配 0-9999999999 的正则表达式

^([0-9][0-9]{0,9}|1000)$

我想要一个 2000000000 的正则表达式。我有输入框,用户只能在其中输入 0 到 2,000,000,000 之间的数字。我是正则表达式的初学者。 我无法为它制作正确的正则表达式。 怎么办?

【问题讨论】:

  • 你的意思是 2000000000 还是 0-2000000000?
  • 是一个正则表达式吗?否则,您可以将其解析为一个数字并检查该值,这将更好地显示代码的意图。
  • Regex 真的不适合这个,你显然可以这样做,但它会很长而且很丑:) 重新考虑一下。
  • 我同意,这就像用锤子擦窗户
  • n=Number("2000000000"); if(0 <= n && n <= 2000000000)。就是这样……

标签: javascript html regex numbers


【解决方案1】:

解释:
0:只有 0
[1-9]\d{0,8}:数字从 1 到 999 999 999,不带前导零
1\d{9}:数字从 1 000 000 000 到 1 999 999 999
20{9} :只有 2 000 000 000

正则表达式:

/^(0|[1-9]\d{0,8}|1\d{9}|20{9})$/

【讨论】:

    【解决方案2】:

    (0|\d{1,9}|1\d{0,9}|2000000000)怎么样

    【讨论】:

    • 2000000000 === 20{9} 更短:p
    • 是的,但是 2000000000 比 20 更容易阅读{9}(也许 :))
    • 正则表达式没有什么“更容易阅读”:p
    • 它也是一种编程语言。我们应该争取可读性。 . . . (但我同意)
    • 不工作!但找到了答案。谢谢@gregn3
    【解决方案3】:

    不管这是否是解决问题的好方法,这里有一个匹配 0-2000000000 的正则表达式。

    更新

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

    【讨论】:

      猜你喜欢
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 2016-09-28
      相关资源
      最近更新 更多