我希望JTextField
仅接受我指定的模式。 “ 12ABCDE1234A1A1”
注意-该模式可以具有任何数字和字母。
JTextField t17 = new JTextField();
final String match ="(\\d\\d)-([a-zA-z]{5})-(\\d\\d\\d\\d)-([a-zA-z]{1})-
(\\d)-([a-zA-z]{1})-(\\d)+$";
Pattern pt = Pattern.compile(match);
final Matcher mt =pt.matcher(t17.getText());
t17.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent arg0) {
if(mt.matches()){
lblPin.setText("verified");
}else{
JOptionPane op = new JOptionPane();
op.showMessageDialog(iff, "INVALID GST NUMBER");
}
}
});
答案 0 :(得分:0)
在您的JTextField
中输入tekst后,请按照以下格式验证其文字:
^\\d{2}[A-Z]{5}\\d{4}([A-Z]\\d){2}$
然后在t17.getText()
方法内调用FocusAdapter
,这样您将获得当前输入的文本。
您可以使用Java代码尝试此操作:
public class JavaFiddle
{
public static void main(String[] args)
{
java.util.regex.Pattern pt = java.util.regex.Pattern.compile("^\\d{2}[A-Z]{5}\\d{4}([A-Z]\\d){2}$");
java.util.regex.Matcher mt = pt.matcher("12ABCDE1234A1A1");
if(mt.matches()){
System.out.println("success");
}else{
System.out.println("failuire");
}
}
}
答案 1 :(得分:0)
好的,我使用JformattedtextField解决了上述问题。
MaskFormatter mask = new MaskFormatter ("##?????####?#?# "): JformattedtextField tf = new JformattedtextField (mask);
仅此而已。.不需要其他情况