2016-07-22 62 views
-1

我有一個窗體中的文本框。我想寫在那裏的文本框,路徑(例如:D:\溫度),然後,我想創建此路徑。 我試圖使用這個正則表達式,但不工作!我想要第一個字母是上面的,但不起作用。另外我希望字符串只包含「:」和「\」一次。 「:\」我想插入一些字符串小寫 @「^ [A-Z] [:] [\] [a-z] $」 有一些sugestions? 非常感謝!正則表達式不工作C#

+0

顯示你已經嘗試什麼,心不是工作。 – Takarii

+1

[a-z]只允許一個小寫字符。在它之後添加+以允許1個或更多或使用*爲零或更多。你需要用第二個分隔反斜槓,因爲它正在分隔]。 – juharr

+1

你的意思是「它不工作」?什麼應該工作,什麼應該失敗?給我們例子! –

回答

0

試試這個正則表達式:[A-Z]:\ [a-z] +。 然後嘗試^ [AZ]:\\ W + $

聲明你的正則表達式像這樣在你的代碼:

string myRegex = @"[A-Z]:\\[a-z]+" 

有了這個,你只驗證像d路徑:\ TEMP,但不是d:\ TEMP \ TEMP2

2

我相信你正在尋找的正則表達式

@"^[A-Z]:\\[a-z]+$" 

沒有與您的兩個問題。首先,你沒有分隔反斜槓,所以它是劃定],這意味着你正在尋找一個],[或冒號後面的一個通過z。第二個問題是你想在反斜槓後面找到一個或多個字母,所以你需要使用+。最後,冒號和反斜槓不必分組。

+0

基於這個問題,我也相信這是被問到的,但是OP應該意識到它不會匹配具有多於一個嵌套的路徑目錄。例如D:\ temp \ other將不匹配。 – fiveclubs

+1

@fiveclubs它也不會匹配文件,如果它有一個擴展名,因爲它不匹配點,它不會匹配混合大小寫目錄或文件名或任何具有非字母字符如下劃線或數字。 – juharr

0

首先,應該通過或失敗的例子會有所幫助。

其次,使用工具來幫助編寫解釋正在發生的事情的正則表達式,例如Expresso或Regex Fiddle。

現在,就這個問題。這裏有一個例子/^[A-Z]:\\[a-z]+$/gm http://refiddle.com/refiddles/5792227f75622d3df0480300

  • ^- 這行
  • [AZ]開始匹配 - 匹配單個大寫字母
  • : - 冒號匹配
  • \ - 逃避反斜槓匹配 反斜槓
  • [AZ] + - 一個字母(在+機構1或 更多次)匹配
  • $ - 匹配行

編輯結束:增加檢查,以確保文件夾中的第一個字符是一個大寫字母/^[A-Z]:\\[A-Z][a-z]+$/gm http://refiddle.com/refiddles/5792259075622d3df05e0300

+0

如果您想要'D:\ one \ two'這樣的多個文件夾,我們需要對此進行更改...另外,您確定只需要小寫文件夾名稱嗎? – CaffGeek

+0

是的..小寫...但如果文件夾名稱應該有第一個字母上面怎麼辦?我該怎麼辦? –

+0

然後,你必須在小寫字母之前添加到正則表達式中,像這樣:/^[AZ]:\\ [AZ] [az] + $/gm'我在小寫檢查前添加了一個大寫字母檢查...目前這個正則表達式會傳遞'D:\ Fo',但是因爲它需要一個大寫字母和一個或多個小寫字母,所以'D:\ F'失敗。改變'+'爲'*'會將它改爲0或更多的小寫字母 – CaffGeek