没有数字或特殊字符的文本字段验证

时间:2018-03-12 15:51:29

标签: validation javafx textfield

我想对我的文本字段进行验证,它不接受特殊字符或数字

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;
            }

这里我试图仅包括无数字验证,但我不确定如何继续。

1 个答案:

答案 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;
            }