2017-03-01 35 views
0

こんにちは、私は正規表現を持っています。何が止まっているのか分からない。有効な正規表現の正規表現文字列

XX2 03-01-2017.xml

しかし、いくつかの理由のためにそれを取っていません。

Regex regex = new Regex(@"^(([a-zA-Z]:)|(\\{2}\w+\\[\w- ]+[$])|(\\{2}\w+))(\\[\w-. ]*)*(.xml|.XML)$"); 

if (!regex.IsMatch(fuSource.PostedFile.FileName)) 
{ 
     Page.Validators.Add(new ValidatorHelper("Please select a valid Application XML input file.")); 
} 

私が渡していたファイル名です。

+0

入力ファイル名の形式を指定できますか? –

+1

正確に何をしているのですか?あなたの正規表現は 'c:\ XX2 03-01-2017.xml'または' \\ c \ XX2 03-01-2017.xml'にマッチします。 –

+0

これは私の入力 "XX2 03-01-2017.xml" – user155489

答えて

0

あなたはそれを自分でしようとするこのようなオンラインツールであなたの正規表現をテストすることができます。..パターンに一致する有効なファイル名を指定して助けてください:
https://regex101.com/r/UX9TjE/1

基本的にはあなたの正規表現は、3と一致しましたファイル名での部品:

  • 接頭辞:それは3つの事
      することができ
    • Windowsライクなドライブ名:c:またはZ:
    • パラメータを使用してWindowsの共有ドライブ:\\shared\user$
    • 窓共有ドライブ:\\shared
  • 名(注:それは空にすることができ、すなわちゼロ-length):
    • これは、バックスラッシュを使用して、ファイルのパスが含まれており、それにはスペース持つことができます
    • \my\path\my file
  • 拡張子:この正規表現は非常に良いではありません.xmlまたは.XML

私見では、ここでいくつかの例では一致している:

c:\path\\XX2 03-01-2017.xml 

\\nas\user$\XX2 03-01-2017.xml 

\\network_shared\.xml 

\\a.XML 

をそれぞれがここで一致した理由あなたが見ることができます:
https://regex101.com/r/UX9TjE/2

+0

説明をありがとう – user155489