2016-04-22 34 views
0

携帯電話番号の制限が必要です。ユーザーは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); 
     } 
    } 
}); 
+1

インデントの完全な欠如は何ですか? – khelwood

答えて

1

国コードはまた、携帯電話番号で考慮され、ここでのコード次のRef、この正規表現"^\\+([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 
} 
+0

しかし、これもユーザーがアルファベットを入力するのを制限しません。 – Ritu

1

またJFormattedTextFieldを使用することができます。

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

これが唯一の有効な数字が最初の場所で入力することができるようになり、ユーザーがフォーマットを推測する必要はありません。ここでは、"###-####-####"は単なる例であり、それらの携帯電話番号に必要な形式に置き換える必要があります。 (see the documentation

関連する問題