我想对我的文本字段进行验证,它不接受特殊字符或数字
public void handle(ActionEvent event) {
if(fnamefield.getText().matches("[0-9]") || fnamefield.getText().isEmpty()) {
ErrorAlert(Alert.AlertType.ERROR, gridPane.getScene().getWindow(), "Error!", "Please enter your full name.\n"
+ "Please make sure no");
return;
}
这里我试图仅包括无数字验证,但我不确定如何继续。
答案 0 :(得分:0)
我认为一个有效的解决方案是您同时检查所有条件。在这种情况下,您正在检查它是否不是空字符串,并且它是否只包含字母和空格。有效的正则表达式为[aA-zZ ]+$
。请注意,此正则表达式接受仅包含空格的String
,这可能对您的应用程序有害,但您的方法也可以。
显示了如何使用正则表达式匹配所需字符串的示例:
public class MyClass {
public static void main(String args[]) {
System.out.println("Are these valid strings?");
System.out.println("Not valid 1".matches("[aA-zZ ']+$")); //false
System.out.println("Not valid!".matches("[aA-zZ ']+$")); //false
System.out.println("".matches("[aA-zZ ']+$")); //false Also invalid
System.out.println(" ".matches("[aA-zZ ']+$")); //true VALID!!
System.out.println("For sure I'm valid".matches("[aA-zZ ']+$")); //true
}
}
在代码示例中,我已将'
添加到正则表达式以匹配“我是”但如果您不想要它,则可以将其删除。
最后,您的代码看起来像:
public void handle(ActionEvent event) {
if(!fnamefield.getText().matches("[aA-zZ ]+$")) {
ErrorAlert(Alert.AlertType.ERROR, gridPane.getScene().getWindow(), "Error!", "Please enter your full name.\n"
+ "Please make sure no");
return;
}