首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >美元金额在3至50之间的定额

美元金额在3至50之间的定额
EN

Stack Overflow用户
提问于 2012-10-08 19:06:15
回答 3查看 96关注 0票数 1

我很接近,但我需要一些帮助来完成一个regex。我们的目标是:

应取得成功:

  • 10.05
  • 3.00
  • 50

如果失败:

  • 55.99 (>50)
  • 3.001 (不能有"1“结尾)
  • 0.50 (< 3)
  • .99 (< 3)
  • $50 (不能有"$")
  • 5.2 (小数点后必须有2位数字)

这是我到目前为止所做的正则表达式,但它没有完全正确地完成上述所有操作:

代码语言:javascript
复制
^([1-4][0-9]|50|[3-9])+(\.[0-9][0-9])?$

有谁能分享答案吗?谢谢!

EN

回答 3

Stack Overflow用户

发布于 2012-10-08 19:11:16

代码语言:javascript
复制
^(50(\.00)?|([1-4][0-9]|[3-9])(\.[0-9][0-9])?)$

有两个问题。首先,您允许小数点之后的非零值,即使它之前的值是50。所以我在顶层把它分开了。其次,只需删除+即可。因为正因为如此,您可以拥有更大的数字(例如,通过将5043链接在一起)。

但是,正如Bergi在评论中提到的,最好只检查格式,单独进行范围检查(不需要regex)。这将是格式检查:

代码语言:javascript
复制
^\d+(\.\d\d)?$
票数 2
EN

Stack Overflow用户

发布于 2012-10-08 19:11:09

一瞥..。只需移除+

^(1-4\50\3-9)(.0-9)?

票数 0
EN

Stack Overflow用户

发布于 2012-10-08 19:14:14

您应该在潜在的美分之前删除+。此外,您还需要作为特例处理50美元,因为它只能在它之后有.00,而不能有任何美分金额。

另外,我将[0-9]更改为数字的快捷方式:\d

代码语言:javascript
复制
/^((0?[3-9]|[1-4]\d)(\.\d\d)?|50(\.00)?)$/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12787884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档