Java 我想要一个文本字段限制3个数字

Java 我想要一个文本字段限制3个数字,java,regex,javafx,Java,Regex,Javafx,我想让用户只能输入3位数字 我尝试使用[0,9]{0,3}来确保输入不能超过3位,但是,[0,9]部分工作,我不能输入abcd之类的内容,但是{0,3}部分不工作,我可以输入3位以上的数字,例如123456 TextField textArea1 = new TextField(); textArea1.setTextFormatter(new TextFormatter<String>(new UnaryOperator<TextFormatter.Chang

我想让用户只能输入3位数字

我尝试使用[0,9]{0,3}来确保输入不能超过3位,但是,[0,9]部分工作,我不能输入abcd之类的内容,但是{0,3}部分不工作,我可以输入3位以上的数字,例如123456

    TextField textArea1 = new TextField();
    textArea1.setTextFormatter(new TextFormatter<String>(new UnaryOperator<TextFormatter.Change>() {
        @Override
        public TextFormatter.Change apply(TextFormatter.Change change) {
            String value = change.getText();
            if(value.matches("[0-9]{0,3}"))
            {
                return change;
            }
            return null;
        }
    }));
TextField textArea1=新建TextField();
textArea1.setTextFormatter(新的TextFormatter(新的UnaryOperator)(){
@凌驾
公共TextFormatter.Change应用(TextFormatter.Change){
字符串值=change.getText();
if(value.matches(“[0-9]{0,3}”))
{
回报变化;
}
返回null;
}
}));

如果更改为零或多个数字且控件的文本长度小于或等于3,则返回更改

    TextField textArea1  = new TextField();
    UnaryOperator<Change> integerFilter = change -> {
        System.out.println(change);
        if (change.getText().matches("\\d*") && change.getControlNewText().length() <= 3) {
            return change;
        }

        return null;
    };

change.getText仅适用于更改的内容,而不适用于整个文本
    TextField textArea1 = new TextField();
    UnaryOperator<Change> integerFilter = change -> {
        System.out.println(change);
        if (change.getControlNewText().matches("[0-9]{0,3}")) {
            return change;
        }

        return null;
    };