检查String是否在正则表达式中的一个点后以两位数结尾?

时间:2014-10-27 14:51:37

标签: java regex string

我尝试使用正则表达式测试一个字符串在Java中的一个点之后是否以完全两位数结尾。怎么能实现这个目标?

像" 500.23"应该返回true,而" 50.3"或" 50"应该返回false。

我尝试了"500.00".matches("/^[0-9]{2}$/")之类的内容,但它返回false。

3 个答案:

答案 0 :(得分:4)

这是一个可能对您有帮助的RegEx:

^\d+\.\d{2,2}$

它既不是完美的也不是最有效的,但它应该引导你朝着正确的方向前进。

^ 表示表达式应从此处开始   \d 会查找任意数字   + 说,领先的\ d可以根据需要经常显示(1-infinity)
  \. 表示您希望在某一点上使用点(。)   \d{2,2} 就是诀窍:它说你想要2个正好2个数字(不少于更多)   $ 告诉您表达式在那里结束(在2位数之后)

在Java中\需要进行转义,因此它将是:

^\\d*\\.\\d{2,2}$

修改
如果你不需要点之前的数字(.),或者如果你真的不关心点之前的数字,那么你可以用{{替换第一个\d+ 1}}如波希米亚人的回答。 (非转义)点表示表达式可以包含任何字符(不仅是digets)。然后甚至可能不再需要领先的.*

^

答案 1 :(得分:2)

使用此regex

 String s="987234.42";
    if(Pattern.matches("^\\d+(\\.\\d{2})$", s)){   // string must start with digit followed by .(dot) then exactly two digit.
    ....
    }

答案 2 :(得分:1)

首先,正斜杠不是正则表达式的一部分。然而,它们被某些语言用于分隔正则表达式 - 但不是java,所以不要使用它们。

其次,在java matches()中必须匹配整个字符串才能返回true(因此^$隐含在正则表达式中。

试试这个:

if (str.matches(".*\\.\\d\\d"))
    // it ends with dot then 2 digits

请注意,在java中,正则表达式中的bash斜杠需要通过字符串文字中的进一步反斜杠进行转义。