我想要一个 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");
}
}
});
将 tekst 输入到 JTextField
后,根据此模式验证其文本:
^\\d{2}[A-Z]{5}\\d{4}([A-Z]\\d){2}$
并在 FocusAdapter
方法中调用 t17.getText()
,这样您就可以获得当前输入的文本。
您可以在 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");
}
}
}
我是一名优秀的程序员,十分优秀!