2011-08-15 123 views
0

文件格式#[文件名] [2個字母的語言環境] [OUTPUTFORMAT - HTML /主題/文]。.XML驗證文件名

有效的文件名 -

myname.en.html.xml

myname2.pt.subject.xml等

此外,文件名來自數據庫中的一列。

有人可以幫助我的正則表達式嗎?

謝謝!

編輯#按@drf

public static boolean isValidFileName(String fileName) { 
    String expression = "^\\w+\\.[A-Z]{2}\\.(?>html|subject|text)\\.xml$" ; 
    CharSequence inputStr = expression ; 
    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); 
    Matcher matcher = pattern.matcher(inputStr); 
    return matcher.matches(); 
} 

public static void main(String[] args) { 
    String fileName = "somefile.en.html.xml" ; 
    System.out.println("Is valid file name # " + fileName + " - " + isValidSEASFileName(fileName) ) ; 
} 
+0

應該retur如果您將「CharSequence inputStr = expression」行更改爲「CharSequence inputStr = fileName」,則返回true。 – drf

回答

3

如果一個保守的文件名稱驗證是可以接受的(字母和數字而已,沒有最大長度)和雙信中的語言環境可以是任意兩個字母,那麼這樣的事情(設置爲不區分大小寫)可以工作:

^\w+\.[A-Z]{2}\.(?>html|subject|text)\.xml$ 
+0

無法使用上面的reg-ex驗證以下文件名 - spgspgbusinesswelcome.en.subject.xml – jagamot

+0

它應該匹配 - 只是爲了闡明,在調用'matches()'和轉義反斜槓時是否使用了CASE_INSENSITIVE標誌在模式中? – drf

+0

添加了我使用表達式創建的相應方法!一些它仍然不工作! – jagamot

0

嘗試以下操作:

[^\.]*\.[a-z]{2}\.(html|subject|text)\.xml