Javafx 文本字段:仅接受长度为 8 或 11 的数字(phone 数字)
Javafx Textfield: Accept only digits of length 8 or 11 ( phone numbers)
我正在使用 javafx 开发一个项目,遇到了一个小问题。我希望我的文本字段只接受长度为 8 或 11 的数字。这是我的代码:
if(!txtPhone.getText().matches(.....) && (txtPhone.getText().length != 8 || txtPhone.getText(). length != 11){
System.out.print("Please enter a valid phone number");
}
任务涉及两个阶段:
- 您必须先创建一个仅接受数字(最多 11 个数字)的文本框。
- 其次,您必须根据您的标准(8 位或 11 位数字)自定义用户输入
TextFormatter is used to solve the problem. A UnaryOperator must be passed to it to filter user input only by numbers and 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
我正在使用 javafx 开发一个项目,遇到了一个小问题。我希望我的文本字段只接受长度为 8 或 11 的数字。这是我的代码:
if(!txtPhone.getText().matches(.....) && (txtPhone.getText().length != 8 || txtPhone.getText(). length != 11){
System.out.print("Please enter a valid phone number");
}
任务涉及两个阶段:
- 您必须先创建一个仅接受数字(最多 11 个数字)的文本框。
- 其次,您必须根据您的标准(8 位或 11 位数字)自定义用户输入
TextFormatter is used to solve the problem. A UnaryOperator must be passed to it to filter user input only by numbers and 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