我想要限制手机号码,用户只能提供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);
}
}
});
答案 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)