【问题标题】:Java IP ValidatorJava IP 验证器
【发布时间】:2013-10-31 14:48:37
【问题描述】:

所以我正在尝试为一个按钮创建一个验证器,该按钮必须检查 3 个文本字段,其中一个是 IP 地址。所以基本上用户必须自己输入完整的 IP 地址。

所以我遇到了一个不需要的语法错误,我确定这是由于文本字段引起的。

我尝试将文本字段转换为字符串,然后进行验证,但这似乎使情况变得更糟

private class theValidator implements ActionListener{

    public void actionPerformed(ActionEvent e)
    {           
        String textIP = txfIP.getText();
        txfIP.setInputVerifier(new InputVerifier() {
            Pattern pat = Pattern.compile("\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\."+
                    "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." +
                    "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." +
                    "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b");

            public boolean shouldYieldFocus(JComponent input) {
                boolean inputOK = verify(input);
                if (inputOK) {
                    return true;
                } 
                else {
                    Toolkit.getDefaultToolkit().beep();
                    return false;
                }
            }
            public boolean verify(JComponent input) {
                JTextField field = (JTextField) input;
                Matcher m = pat.matcher(field.getText());
                return m.matches();
            }
        });
}
}

【问题讨论】:

标签: java actionlistener validation actionevent


【解决方案1】:

1) 我没有看到 txfIP.setInputVerifier(.. 的右大括号

我建议使用一些像 Eclipse 这样的编辑器来编码,这样你会发现很容易捕捉到这样的错误。

2) 至于验证 ip 地址的正则表达式,你可以试试这个。希望有帮助。

IPADDRESS_PATTERN = 
        "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
        "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
        "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
        "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";

【讨论】:

  • 我要评论的是它的右括号
  • 不,你缺少“);”花括号用于“new InputVerifier() {..”
  • 是的,我在发短信后就发现了,谢谢 :) 我想我应该在看了 10 个小时的代码后停止编程^_^
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 2012-01-06
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多