对手机号码的限制

时间:2016-04-22 09:26:44

标签: java

我想要限制手机号码,用户只能提供10个号码,不允许使用符号和字母。我使用的代码对输入字母没有任何限制。

mno=new TextField();
mno.setBounds(340, 460, 0, 0);
mno.setSize(90, 25);
mmess=new JLabel("Enter valid  mobile no.");
mmess.setBounds(450, 460, 0, 0);
mmess.setSize(300, 30);
mmess.setVisible(false);

mno.addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent e) {
        String input=mno.getText();
        Pattern patt = Pattern.compile("^\\d{10}$");
        Matcher m = patt.matcher(input);

        if (m.find()) {
            mmess.setVisible(true);
            mmess.setForeground(Color.RED);
        }
        else {
            mmess.setVisible(false);
        }
    }
});

2 个答案:

答案 0 :(得分:1)

参考以下代码,此处的国家/地区代码也会被视为手机号码,如果不需要,您可以将其删除,然后使用此正则表达式"^\\+([0-9\\-]?){9,11}[0-9]$"

String regex = "^((\\+|00)(\\d{1,3})[\\s-]?)?(\\d{10})$";
String str = "+123-9854875847";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);

if (m.matches()) {
    // actions to be taken
}

答案 1 :(得分:1)

您也可以使用JFormattedTextField

JFormattedTextField text = new JFormattedTextField(
        new MaskFormatter("###-####-####"));

这将仅允许首先输入有效数字,并且用户无需猜测格式。在这里,"###-####-####"只是一个示例,应该替换为您希望这些移动号码具有的任何格式。 (see the documentation