Java正则表达式匹配数字模式

时间:2016-04-04 09:59:31

标签: java regex number-formatting

我想检查我的号码是否与正则表达式匹配。

我想要实现的是检查数字是否与模式匹配,而不是执行代码。

我的if语句如下:

public String refactorNumber(String input){
    if(input.matches("#,##0.##")) {
       //execute code
    }
}

但它从不匹配,我的输入数字是:

 - 0
 - 100
 - 1,100.01

我做错了什么?

2 个答案:

答案 0 :(得分:0)

看起来你还没有正确理解正则表达式语法。

从您的示例代码中,看起来您正在尝试匹配数字,后跟逗号,后跟两位数字,后跟零,后跟小数点,后跟两位数。

为此,您的正则表达式模式必须是:

\d,\d{2}0\.\d{2}

找出模式的一个很好的资源是这个正则表达式备忘单:

https://www.cheatography.com/davechild/cheat-sheets/regular-expressions/

很遗憾,该网站目前存在问题,因此您可以使用此Google搜索来查找它:

https://www.google.co.uk/search?q=regex+cheat+sheet&tbm=isch

答案 1 :(得分:0)

你可以这样做(如果我做错了,请纠正我):

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public static void main(String[] args) {

    String input =" - 0\n"+
      " - 100\n"+
      " - 1,100.01\n"+
      " - 100,100,3\n"+
      " - 100,100,3.15\n"+
      "";  
    refactorNumber(input);  
}

public static void refactorNumber(String input){
    Matcher m = Pattern.compile("((?:\\d,)?\\d{0,2}0(?:\\.\\d{1,2})?)(?!\\d*,)").matcher(input);
    while (m.find()) {
        //execute code
    }