我很接近,但我需要一些帮助来完成正则表达式。这是目标:
应该成功:
- 10.05
- 3.00
- 50
应该失败:
- 55.99 (>50)
- 3.001(最后不能有“1”)
- 0.50 (< 3)
- .99 (< 3)
- 50 美元(不能有“$”)
- 5.2(如果是十进制,后面必须有2位)
这是我到目前为止的正则表达式,但它并不能完全正确地完成上述所有操作:
^([1-4][0-9]|50|[3-9])+(\.[0-9][0-9])?$
任何人都可以分享答案吗?谢谢!
我很接近,但我需要一些帮助来完成正则表达式。这是目标:
应该成功:
应该失败:
这是我到目前为止的正则表达式,但它并不能完全正确地完成上述所有操作:
^([1-4][0-9]|50|[3-9])+(\.[0-9][0-9])?$
任何人都可以分享答案吗?谢谢!
^(50(\.00)?|([1-4][0-9]|[3-9])(\.[0-9][0-9])?)$
有两个问题。首先,您允许小数点后的非零值,即使它之前的值是 50。所以我在顶层将其分开。其次,只需删除+
. 因为由于它,您可以拥有更大的数字(例如,通过链接50
和43
在一起)。
但是,正如 Bergi 在评论中提到的那样,最好只检查格式,并单独进行范围检查(不使用正则表达式)。这将是格式检查:
^\d+(\.\d\d)?$
您应该删除+
潜在的美分之前。此外,您需要将 50 美元作为特殊情况处理,因为它后面只能有 50 美元,.00
而不能有任何美分金额。
另外,我将 更改[0-9]
为数字的快捷方式:\d
/^((0?[3-9]|[1-4]\d)(\.\d\d)?|50(\.00)?)$/
我找到了一个在线实用程序 ,它在输入所需范围的下限和上限时返回整数的正则表达式。我将它用于.
限制 3-50 之前和.
限制 0-99 之后的部分。结果如下:
^0*([3-9]|[1-4][0-9]|50)(\.[0-9]{2})?$
快速浏览...只需删除 +
^([1-4][0-9]|50|[3-9])(.[0-9][0-9])?$