【问题标题】:Regex range between 0 and 75 including two decimal digits正则表达式范围在 0 到 75 之间,包括两位小数
【发布时间】:2017-06-15 19:19:17
【问题描述】:

我是 regex 的初学者,所以当谈到它时,我试图通过在堆栈上寻找类似的问题来学习它,但经过大量尝试后我被卡住了,我找不到我自己的正则表达式的问题在哪里。

我正在寻找可以帮助我处理我已经创建的正则表达式(如下提供)或给我一个更好的正则表达式想法/解决方案的人。

我需要一个正则表达式,其中包含 0 到 75 之间的数字,最多 4 位数字,包括 2 个十进制数字。例如 75.0015.50,但不包括小数位的完整数字也应为有效数字,例如:75、15(不包括 00)。

下面是几个应该有效和无效的数字:

有效数字:

0
0.1
0.10
5.15
5.52
15.50
74.99
75.00
75

无效的数字:

00
-10
-0
-0.50
00.50
05.15
75.01
76.00
76
76.19

这是我已经创建的正则表达式,显然应该修复:

^(75(?:\.00?)?|[1-7]?[0-5](?:\.\d\d?)?|\d(?:\.\d?\d)?)$

这里还有demo

附言我在this related question 上寻找类似的答案。

【问题讨论】:

标签: regex validation


【解决方案1】:

您需要通过以下方式修复您的模式:

^(?:75(?:\.00?)?|7[0-4](?:\.\d\d?)?|[1-6]?\d(?:\.\d\d?)?)$

regex demo

详情

  • ^(?: - 字符串的开始和非捕获组的开始(以便锚可以​​应用于交替组中的所有替代项)
  • 75(?:\.00?)? - 75 后跟可选的.0 和可选的0 序列
  • | - 或
  • 7[0-4](?:\.\d\d?)? - 7 后跟一个从 04 的数字,然后是 . 的可选序列,一个数字,然后是一个可选数字
  • | - 或
  • [1-6]?\d(?:\.\d\d?)? - 从16 的可选数字,后跟任意1 数字,然后是. 的可选序列,一个数字,然后是可选数字
  • )$ - 第一组的结尾和字符串的结尾

【讨论】:

  • 非常感谢您的正则表达式和解释。现在,我错过的一切都变得有意义了。效果很好。
【解决方案2】:

我非常喜欢在您的演示中使用这个 RegEx 工具。我认为您需要在 RegEx 中添加更多类:

^(([1-6]?[0-9])$|^(7[0-5])$|^(([1-6]?[0-9])).[0 -9][0-9]?)$|^((7[0-4]).[0-9][0-9]?)$|^(75.00?)$

问候,

【讨论】:

  • 是的,这是一个不错的工具。谢谢你的回答。
猜你喜欢
  • 2016-09-21
  • 1970-01-01
  • 2011-11-26
  • 2013-07-30
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
相关资源
最近更新 更多