java - 我想让一个文本字段限制 3 个数字

标签 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.Change>() {
        @Override
        public TextFormatter.Change apply(TextFormatter.Change change) {
            String value = change.getText();
            if(value.matches("[0-9]{0,3}"))
            {
                return change;
            }
            return 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;
    };

如果您只想使用Matches,则需要使用getControlNewText()

    TextField textArea1 = new TextField();
    UnaryOperator<Change> integerFilter = change -> {
        System.out.println(change);
        if (change.getControlNewText().matches("[0-9]{0,3}")) {
            return change;
        }

        return null;
    };

关于java - 我想让一个文本字段限制 3 个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57774454/

相关文章:

java - 我应该在这里使用哪种算法?在字符串数组中查找字符串

regex - 谁能解释一下这个正则表达式

r - r 中的条件 str_replace_all 区分大小写

Java 正则表达式无法编译 - 无匹配可用错误

java - 将 CheckComboBox 添加到 PropertySheet JavaFX

java - Git merge/pull 后使用 Maven 进行部分全新安装

java - 如何获取库的所有依赖项?

java - 抽屉导航 Activity ,通过 fragment 发送

java - OpenCV 不适用于 JavaFx

java - Gluon 应用程序无法在 iOS 上启动