我很接近,但我需要一些帮助来完成一个regex。我们的目标是:
应取得成功:
如果失败:
这是我到目前为止所做的正则表达式,但它没有完全正确地完成上述所有操作:
^([1-4][0-9]|50|[3-9])+(\.[0-9][0-9])?$有谁能分享答案吗?谢谢!
发布于 2012-10-08 19:11:16
^(50(\.00)?|([1-4][0-9]|[3-9])(\.[0-9][0-9])?)$有两个问题。首先,您允许小数点之后的非零值,即使它之前的值是50。所以我在顶层把它分开了。其次,只需删除+即可。因为正因为如此,您可以拥有更大的数字(例如,通过将50和43链接在一起)。
但是,正如Bergi在评论中提到的,最好只检查格式,单独进行范围检查(不需要regex)。这将是格式检查:
^\d+(\.\d\d)?$发布于 2012-10-08 19:11:09
一瞥..。只需移除+
^(1-4\50\3-9)(.0-9)?
发布于 2012-10-08 19:14:14
您应该在潜在的美分之前删除+。此外,您还需要作为特例处理50美元,因为它只能在它之后有.00,而不能有任何美分金额。
另外,我将[0-9]更改为数字的快捷方式:\d
/^((0?[3-9]|[1-4]\d)(\.\d\d)?|50(\.00)?)$/https://stackoverflow.com/questions/12787884
复制相似问题