2014-03-30 84 views
0

我知道还有其他问题,但是即使使用这些代码,我也找不到代码中的错误。 我写了这个来检查在我的textField中写入的内容是否是一个路径,但它似乎是不正确的。这里的代码:Java正则表达式与路径

textFieldNewGameUrl.addFocusListener(new FocusAdapter() { 
     @Override 
     public void focusLost(FocusEvent arg0) { 

      boolean isMatched = (textFieldNewGameUrl.getText()).matches("([a-zA-Z]:)?(\\\\[a-zA-Z0-9_.-]+)+\\\\?"); 

      if(isMatched){   
       labelNewGameFeedback.setText("Ok, the path is correct"); 
      } 
      else{ 
       labelNewGameFeedback.setText("Strange things have happened : check the path."); 
      } 

     } 
    }); 
+1

什么是预期输入和行为? –

+1

'不正确'是什么意思? – locoyou

+0

所以你想检查一个窗口路径的正确性。在你看来,是一个由“NUL”组成的路径有效吗?另见[这个问题/答案集](http://stackoverflow.com/questions/468789/is-there-a-way-in-java-to-determine-if-a-path-is-valid-without -attempting至CRE)。换一种说法;试着打开文件,看看会发生什么。 –

回答

0

写一个正则表达式来检查路径是非常复杂的。

public static void main(String[] args) { 
    Pattern pattern = Pattern.compile("([a-zA-Z]:)?(\\\\[a-zA-Z0-9_.-]+)+\\\\?"); 
    System.out.println(pattern.matcher("D:\\").matches()); 
    System.out.println(pattern.matcher("D:\\A").matches()); 
    System.out.println(pattern.matcher("A\\B").matches()); 
    System.out.println(pattern.matcher("\\A\\B").matches()); 
} 

这将输出

false 
true 
false 
true 

你的模式没有完全打破,但你需要它开始用反斜杠。相对路径不需要。