java - 手机号码字段验证

标签 java regex validation lost-focus

我想知道这段代码有什么问题? 我正在文本框中输入内容(10 位数字的手机号码)。 我的问题是,即使我的输入正确,此代码始终打印 else 语句。

mobNo=textMobNo.getText();

textMobNo.addFocusListener(new FocusListener() {

    @Override
    public void focusLost(FocusEvent arg0) {
        // TODO Auto-generated method stub

        Pattern pattern = Pattern.compile("^[789]\\d{9}$");
        Matcher matcher = pattern.matcher(mobNo);

        if (matcher.matches()){
            System.out.println("valid");
        }
        else{
            System.out.println("invalid");
        }       
    }

    @Override
    public void focusGained(FocusEvent arg0) {
        // TODO Auto-generated method stub

    };
});

最佳答案

您正在从文本字段获取文本,然后添加焦点监听器。稍后,焦点监听器将被触发,然后使用在焦点监听器处于 Activity 状态之前从字段中获取的文本。是的,该文本可能是在该字段中输入任何内容之前的文本;这可以解释它是一个空字符串。尝试将文本放入焦点监听器...(提示 - 当在字段中键入文本时,从文本字段获取的字符串不会不断更新...)

关于java - 手机号码字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18618813/

相关文章:

java - 不明确的结果日期java

JavaFX:GridPane、ObservableList 和 ListChangeListener

java - 文件下载 SSLHandshakeException

c# - MVC - 为 'Html.ValidationMessage' 或 'Html.TextBox' 更改或添加类

javascript - jQuery 验证边框颜色

java - API每次响应不同的JSON类型

java - 使用 $ 在正则表达式中明确定义输入的结尾

超过 100 个组的 Python 正则表达式?

python - 使用 grep 或 sed 合并两行

validation - Sequelize : Unique validation with soft deleted registers