有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

类似“500.23”的内容应该返回true,而“50.3”或“50”应该返回false

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


共 (3) 个答案

  1. # 1 楼答案

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

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

    试试这个:

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

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

  2. # 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.
        ....
        }
    
  3. # 3 楼答案

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

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

    它可能既不是完美的,也不是最有效的,但它应该引导你走向正确的方向

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

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

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

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

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