【发布时间】:2020-03-13 13:23:26
【问题描述】:
使用 javafx 处理一个项目,我遇到了一个小问题。我希望我的文本字段只接受长度为 8 或 11 的数字。这是我的代码:
if(!txtPhone.getText().matches(.....) && (txtPhone.getText().length != 8 || txtPhone.getText(). length != 11){
System.out.print("Please enter a valid phone number");
}
【问题讨论】:
-
如果满足其中一个条件,您希望显示错误消息,对吗?目前,括号中的表达式始终计算为
true(在修复语法错误之后):文本长度始终不同于 8、11 或两者。这使得表达式在逻辑上等同于!txtPhone.getText().matches(.....)。您可能打算使用String text = texttPhone.getText(); if (!(((text.length() == 11) || (text.length() == 8)) && text.matches("\\d*")))(请注意,我对条件进行了一些重新排序,因为比较字符串长度比匹配正则表达式花费的时间更少。) -
使用 de morgan 您可以将上述评论中的条件写入
!text.matches("\\d*") || (text.length() != 8 && text.length() != 11),即如果文本不只包含数字或文本长度与两个允许的长度不同,则这是一个错误.
标签: javafx textfield phone-number