Java 手机号码字段的验证

Java 手机号码字段的验证,java,regex,validation,lost-focus,Java,Regex,Validation,Lost Focus,我想知道这个代码有什么问题? 我在文本框中输入信息(一个10位数的手机号码)。 我的问题是,即使我的输入正确,这段代码也会一直打印else语句 mobNo=textMobNo.getText(); textMobNo.addFocusListener(new FocusListener() { @Override public void focusLost(FocusEvent arg0) { // TODO Auto-generated method stu

我想知道这个代码有什么问题? 我在文本框中输入信息(一个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

    };
});

您正在从文本字段获取文本,然后添加focusListener。在稍后的某个时间,焦点侦听器被触发,然后使用焦点侦听器激活之前从字段中获取的文本。是的,这段文字可能是在字段中键入任何内容之前出现的;这可以解释为什么它是一个空字符串。尝试在焦点侦听器中获取文本。。。(提示-在文本字段中键入文本时,您从文本字段中获取的字符串不会不断更新…

能否给出您所在地区的有效和无效电话号码的示例?请参阅我想要有效电话号码9923568156。926是无效的。电话号码应为10位数字。检查这个正则表达式。你会从中得到一些想法。那么为什么开头的“不是7、8或9”呢?我怀疑
mobNo
的值不是你想象的值。尝试调试代码以检查它,或者只调用
System.out.println(“““+mobNo+””)if(matcher.matches()){
之前进行编码。如果将
mobNo
硬编码到
“9923568156”
,是否会遇到同样的问题?