2017-03-01 57 views
0

嗨我有一個正規表達式,現在失敗了。不知道什麼是停止。有效的正則表達式字符串

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.")); 
} 

文件名我傳遞的是:

XX2 03-01-2017.xml

但由於某些原因,沒有采取。

請與該模式匹配的有效文件名幫助..

+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在文件名部分:

  • 前綴:它可以是三樣東西
    • 類似Windows的驅動器名:c:Z:
    • Windows共享驅動器具有參數:\\shared\user$
    • Windows共享驅動器:\\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