Java代码正则表达式不起作用

时间:2016-01-18 15:12:42

标签: java regex

我正在尝试将验证实用程序添加到我已创建的程序中。该实用程序将分析文件以确保其符合适当的参数。我已完成第一行的分析,并遇到有关空白的问题。我用于测试的文件包括以下行:

1459875655257 05112345678945612345678941EMMAM                  BANK OF AMERICA, NA    BAC     

测试此行并产生问题的代码块如下:

  if(immediateDestName.isEmpty()){
    JOptionPane.showMessageDialog(null, 
      "ERROR: File header immediate destination name is missing!");
  } else {
    if((sCurrentLine.substring(40,63)).matches("A-Za-z0-9 ]+")){
    }else{
      JOptionPane.showMessageDialog(null, 
         "ERROR: File header immediate destination name is invalid: "
         +sCurrentLine.substring(40,63));
    }
  }

当我运行验证实用程序时,它会弹出JOptionPane,表明该名称无效。仅供参考,实际的子串是EMMAM,后跟一堆空格(因此问题)。

有人可以帮我弄清楚为什么我的程序会标记此警报,即使从所有我可以看到子字符串匹配正则表达式?

1 个答案:

答案 0 :(得分:3)

使用

if (sCurrentLine.substring(40,63).matches("[A-Za-z0-9 ]+")) { .. }

我相信你错过了第一个支架。这将匹配A-Za-z0-9或空格中的任何字符。