Javafx文本字段:仅接受长度为8或11的数字(电话号码)

使用javafx进行项目时,我遇到了小麻烦。我希望我的文本字段只接受长度为8或11的数字。这是我的代码:

if(!txtPhone.getText().matches(.....) && (txtPhone.getText().length != 8 || txtPhone.getText(). length != 11){
System.out.print("Please enter a valid phone number");
}
afeijian 回答:Javafx文本字段:仅接受长度为8或11的数字(电话号码)

任务涉及两个阶段:

  • 您必须首先创建一个仅接受数字的文本框(最多11个数字)。
  • 第二,您必须根据自己的标准(8位或11位数字)来自定义用户输入

TextFormatter用于解决问题。必须将UnaryOperator传递给它,以仅按数字过滤用户输入,而StringConverter则要传递给用户以验证用户输入。

这是示例实现:

UnaryOperator<TextFormatter.Change> filter = change -> {
    if(change.getControlNewText().matches("\\d{0,11}")) {
        return change;
    }

    return null;
};

StringConverter<String> converter = new StringConverter<String>() {
    @Override
    public String toString(String s) {
        if(s == null || s.isBlank()) return "";

        if(s.matches("\\d{8}|\\d{11}")) {
            return s;
        }

        return "";
    }

    @Override
    public String fromString(String s) {
        if(s == null || s.isBlank()) return "";

        if(s.matches("\\d{8}|\\d{11}")) {
            return s;
        }

        throw new RuntimeException("Converter error");
    }
};

textField.setTextFormatter(new TextFormatter<>(converter,null,filter));
,

正则表达式可用于创建自定义验证。

if (txtPhone.getText().matches("\\d{8}|\\d{11}") {

    System.out.println("Its Valid Number");
    //return true;
}else {

    System.out.println("Invalid Input..!");
    //return false;
}

您可以学习和检查正则表达式Here

本文链接:https://www.f2er.com/3082820.html

大家都在问