Java 检查正则表达式中的字符串是否以点后两位数字结尾?

Java 检查正则表达式中的字符串是否以点后两位数字结尾?,java,regex,string,Java,Regex,String,我试图使用正则表达式测试Java中的字符串是否以点后两位数字结尾。如何才能做到这一点 500.23之类的值应该返回true,而50.3或50应该返回false 我尝试了500.00.matches/^[0-9]{2}$/之类的方法,但它返回false。下面是一个正则表达式,它可能会帮助您: ^\d+\.\d{2,2}$ 它可能既不是完美的,也不是最有效的,但它应该引导你走向正确的方向 ^表示表达式应该从这里开始 \d查找任何数字 +表示,前导\d可以根据需要频繁出现1–无穷大 \.表示你在等一

我试图使用正则表达式测试Java中的字符串是否以点后两位数字结尾。如何才能做到这一点

500.23之类的值应该返回true,而50.3或50应该返回false


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

下面是一个正则表达式,它可能会帮助您:

^\d+\.\d{2,2}$
它可能既不是完美的,也不是最有效的,但它应该引导你走向正确的方向

^表示表达式应该从这里开始 \d查找任何数字 +表示,前导\d可以根据需要频繁出现1–无穷大 \.表示你在等一个点。一度 \d{2,2}这就是诀窍:它说你想要2个数字,正好是2个数字,不少于也不多于 $表示表达式在2位数字后结束

在Java中,需要转义\以便:

^\\d*\\.\\d{2,2}$
编辑 如果你不需要点前的数字。或者,如果你真的不在乎点前面的是什么,那么你可以用a.*替换第一个\d+,就像波西米亚人的回答一样。非转义点表示表达式可以包含任何字符,而不仅仅是数字。那么,即使是前导字符也可能不再需要了

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

首先,正斜杠根本不是正则表达式的一部分。但是,有些语言使用它们来定义正则表达式,而不是java,所以不要使用它们

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

试试这个:

if (str.matches(".*\\.\\d\\d"))
    // it ends with dot then 2 digits
请注意,在java中,正则表达式中的bash斜杠需要通过字符串文本中的进一步反斜杠进行转义。

使用此正则表达式


试试这个:str.matches.\\.\\d\\d不值得用一个答案来强调这个问题,但这可以阻止每个人浪费时间。这看起来很简单。你现在一定试过什么了。@Bohemian,你不应该有美元吗?否则它将匹配3.23A?@marounnaroun no。匹配必须是整个字符串,因此^和$是隐含的。唉,我试图节省ppl的时间,但看看发生了什么…现在OP已经发布了一个尝试,我们可以继续了。哈哈哈\d*也将匹配零位数字;我想您可以通过使用\d{2}@GyroGearless使正则表达式更神秘/更短,谢谢。我将*替换为+。关于{2},它当然更短,但是如果像我这样不经常使用正则表达式,{min,max}符号更容易理解:OP并没有说输入必须是数字,所以ABC.12应该通过,还有一点很好:谢谢@Bohemian,这只是我的一个假设,抱歉没有明确说明。事实上,我只是在处理数字,我在代码的另一部分有控制权,所以我不必检查它。所以游戏机器人和波西米亚式的答案对我来说都是完美的。我不知道该选哪一个。我想我会选择游戏机器人,因为它的解释,但两者都非常适合我。感谢“波希米亚人”。请阅读我在另一个答案中的评论。谢谢
 String s="987234.42";
    if(Pattern.matches("^\\d+(\\.\\d{2})$", s)){   // string must start with digit followed by .(dot) then exactly two digit.
    ....
    }