Javafx eclipse 文本输入在数字或混合时验证,在非数字时拒绝

问题描述 投票:0回答:1

在JavaFx eclipse应用程序中,在将数据保存到SQL数据库之前,需要验证以下条件:数字值类似或混合。但是,如果纯非数字带有特殊字符(如 JHGYyree),则拒绝。 允许的文本:1234、A1254、b64A8(忽略大小写) 不允许:aasdrgf、ASDSA、Asxss、@#vdvd、@33KJJJ、#@878sasa。

按 Enter 键或鼠标单击“保存”按钮后,将检查输入的数据。 如何在JavaFX中编写这样的函数?

     @FXML
     private Label lblOffName;

     Boolean static input_validation == false;
     String id = txtOffName.getText();

     if(validate_text(id) == true){

    }
    public Boolean validate_text(String str){
    // validation code here ...
   return input_validation;
   }
eclipse validation javafx text textbox
1个回答
0
投票

示例

使用循环的示例解决方案。 您可以使用正则表达式来代替,但我将其作为练习留给读者。

package application;

public class InputValidator {

    public static void main(String[] args) {
        String[] testData = {
                "1234", "A1254", "b64A8", // valid
                "aasdrgf", "ASDSA", "Asxss", "@#vdvd", "@33KJJJ", "#@878sasa" // invalid
        };

        for (String input: testData) {
            validate(input);
        }
    }

    /**
     * Either Numeric Value like or Mixed. But, to reject if purely non-numeric with(out) special characters like JHGYyree.
     * @param input string to validate
     * @return true if the input string is value.
     */
    private static boolean validate(String input) {
        boolean hasDigit = false;
        boolean hasAlpha = false;
        boolean hasSpecial = false;

        for (int i = 0; i < input.length(); i++) {
            char c = Character.toLowerCase(input.charAt(i));

            if (isDigit(c)) {
                hasDigit = true;
            }

            if (isAlpha(c)) {
                hasAlpha = true;
            }

            if (!isDigit(c) && !isAlpha(c)) {
                hasSpecial = true;
            }
        }

        boolean isValid =
                (hasDigit && !hasAlpha && !hasSpecial) || (hasDigit && hasAlpha && !hasSpecial);

        System.out.println(input + " > " + isValid);

        return isValid;
    }

    private static boolean isDigit(char c) {
        return '0' <= c && c <= '9';
    }

    private static boolean isAlpha(char c) {
        return 'a' <= c && c <= 'z';
    }
}

输出

1234 > 正确 A1254 > 正确 b64A8 > 正确 aasdrgf > 假 ASDSA > 假 Asxss > 假 @#vdvd > 假 @33KJJJ > 假 #@878sasa > 假

与 JavaFX 集成

我也会将此作为练习留给读者。

您可以自己编写集成代码,或者利用验证框架,例如:

© www.soinside.com 2019 - 2024. All rights reserved.