【问题标题】:Regular Expression - How can I match all numbers less than or equal to Twenty Four?正则表达式 - 如何匹配小于或等于二十四的所有数字?
【发布时间】:2016-01-13 04:43:43
【问题描述】:

我对正则表达式有点陌生,正在为需要使用正则表达式的数量字段编写验证。

如何匹配所有小于或等于 24 的数字?

我试过了

var pat = /^[1-9]$|^[1-2]\d$|^3[0-6]$/;

但这仅匹配 1-24。有没有一种简单的方法来匹配所有可能小于或等于 24 的数字?

【问题讨论】:

  • 你也要匹配负数吗?
  • 数量字段不是数字吗?函数Number 可能会有所帮助。
  • 您的正则表达式实际上匹配 1-36 。 . .但无论如何,您需要更准确地描述您的规则,而不仅仅是“所有小于或等于 24 的数字”,因为这听起来确实应该意味着 1-24 。 . .
  • 同意。任意大的负数是否应该通过这个正则表达式?比如说,-1、-24 和 -5060000。
  • 不能只检查值是否为 = 1 ?

标签: javascript regex


【解决方案1】:

我不建议您使用正则表达式来检查数字是否在范围之间。要比较数字,应使用比较运算符。

if (number >= 0 && number <= 24)

但是,如果这不可行/不可能,您可以使用正则表达式。


你也可以使用

^(2[0-4]|[01]?[0-9])$

Regex101 Demo

说明:

  1. ^: 锚线起点
  2. 2[0-4]:匹配 2 后跟 0 到 4 之间的任意数字 - 匹配 20-24
  3. |: 正则表达式中的 OR 条件
  4. [01]?[0-9][01]?:可选匹配 0 或 1。 [0-9]:匹配 0 到 9 范围内的任意数字一次 - 匹配 0-19

Demo

input:valid {
  color: green;
}
input:invalid {
  color: red;
}
&lt;input pattern="(2[0-4]|[01]?[0-9])" /&gt;

您可以使用以下正则表达式

^(2[0-4])|(^[01]?[0-9])$

Regex101 Demo

【讨论】:

  • 尝试修改它以采用任意负数和前导零:var pattern = /(?:(^-0*\d+$)|((^0*2[0-4]$)|(^0*1?\d$)))/; - regex101.com/r/vA8rY2/3
【解决方案2】:
^(?:[0-9]|[1][0-9]|2[0-4])$

试试这个。查看演示。

https://regex101.com/r/iJ7bT6/3

【讨论】:

  • @Tushar 现在将匹配0:P
猜你喜欢
  • 1970-01-01
  • 2014-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多