我想在java中的正则表达式中实现这种格式12345-1234567-1

时间:2015-11-22 13:32:45

标签: java regex

我想实现巴基斯坦的cnic数字标准格式,如下所示:12345-1234567-1

但我对此一无所知。我为此找到了以下代码,但它也在NetBeans中出错。

private void idSearchKeyPressed(java.awt.event.KeyEvent evt) {
    String cnicValidator = idSearch.getText();

    if (cnicValidator.matches("^[0-9+]{5}-[0-9+]{7}-[0-9]{1}$")) {
       idSearch.setEditable(true);
    }
    else {
        idSearch.setEditable(false);
    }        
}

1 个答案:

答案 0 :(得分:0)

模式是正确的。但它可以浓缩到这个:

^[\\d]{5}-[\\d]{7}-\\d$

idSearch来自哪里?如果它不是该类的最终成员,则无法以这种方式访问​​它。因此,请确保idSearch内可以使用idSearchKeyPressed。还要确保没有尾随空格或类似的东西。你可以通过调用

来做到这一点
cnicValidator = cnicValidator.trim();

以下示例为两个正则表达式版本返回true

public static void main(String... args){
    String id = "35241-7236284-4";

    System.out.println(id.matches("^[\\d]{5}-[\\d]{7}-\\d$"));
    System.out.println(id.matches("^[0-9+]{5}-[0-9+]{7}-[0-9]{1}$"));
}