Java 为什么正则表达式不起作用?

Java 为什么正则表达式不起作用?,java,regex,Java,Regex,我有一个正则表达式^[-+]?\d+\.\d+?$用于java模式匹配,我不知道为什么不起作用。 我需要接受带小数点的数字,比如[+-]123和[+-]123.123,但它接受[+-]123.123.123到。我做了什么坏事 这是检查我的号码是否正确的方法 public void addPoint(){ String pattern = "^[-+]?\\d+(\\.\\d+)?$"; if(display.getText().matches(pattern)){

我有一个正则表达式^[-+]?\d+\.\d+?$用于java模式匹配,我不知道为什么不起作用。 我需要接受带小数点的数字,比如[+-]123和[+-]123.123,但它接受[+-]123.123.123到。我做了什么坏事

这是检查我的号码是否正确的方法

 public void addPoint(){

    String pattern = "^[-+]?\\d+(\\.\\d+)?$";
    if(display.getText().matches(pattern)){
        display.setText(display.getText()+".");
    }else{
        JOptionPane.showMessageDialog(null, "Error");
    }

 }

您的正则表达式^[-+]?\\d+\.\\d+?$看起来不错。。也许我在java代码中做错了什么。字符串模式=^[-+]?\\d+\.\\d+?$;ifdisplay.getText.matchespattern do code如果您发布代码会更好。^[-+]?\d+\。\d+?$将不匹配123.123.123请提供一个显示问题的测试用例。您的代码没有按照您告诉我们的那样执行。是的,正则表达式很好,但我在java代码中发现了一个错误。我认为正则表达式有问题。
String pattern = "^([-+])?\\d+(\\.\\d+)?$";
    String s1 = "+123";
    String s2 = "-123.123";
    String s3 = "-123.123.123";
    System.out.println(s1.matches(pattern));//true
    System.out.println(s2.matches(pattern));//true
    System.out.println(s3.matches(pattern));//false
    //the regex works,there is something wrong in other place