Java 我想要一个文本字段限制3个数字
我想让用户只能输入3位数字 我尝试使用[0,9]{0,3}来确保输入不能超过3位,但是,[0,9]部分工作,我不能输入abcd之类的内容,但是{0,3}部分不工作,我可以输入3位以上的数字,例如123456Java 我想要一个文本字段限制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
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;
};