2014-03-30 119 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 

你的模式沒有完全打破,但你需要它開始用反斜槓。相對路徑不需要。