2011-08-15 23 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

n 'CharSequence inputStr = expression'行を' CharSequence inputStr = fileName'に変更すると真です。 – drf

答えて

3

保守的なファイル名の検証が許容できる(文字と数字のみ、ノー最大長)との二の場合文字ロケールは任意の2文字にすることができます(大文字と小文字を区別しないように設定されています)。

^\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