常用表达

时间:2014-07-03 11:26:30

标签: regex

我最近正在阅读"掌握正则表达式"

并在第24页上说

"匹配美元金额的一种方法是:     \$[0-9]+(\.[0-9][0-9])?

等等等等等等。

我们的表达式不匹配的一种值是$.49。要解决这个问题,您可能会想要将加号更改为星号,但这不起作用。 "

这是什么意思?

因为我在一些正则表达式测试网站上检查了它 它匹配吗?

2 个答案:

答案 0 :(得分:1)

问题是(\.[0-9][0-9])?也是可选的。 \$[0-9]*(\.[0-9][0-9])?可以匹配$后没有数字。

确保拥有数字的方法是:

\$([0-9]+(\.[0-9][0-9])?|\.[0-9][0-9])

答案 1 :(得分:1)

您可以使用此正则表达式来解决此问题:

\$(?:[0-9]+(?:\.[0-9]{2})?|\.[0-9]{2})