C#中利用正則表示式檢測檔案路徑的合法性
阿新 • • 發佈:2019-01-28
專案中少不了讀取或設定檔案路徑的功能,如何才能對輸入的路徑是否合法進行判斷呢?用正則表示式是個不錯的方式。我們都知道檔案路徑的字串一般格式,首先是碟符,一般是abcde等字幕,碟符後用冒號隔開,然後用“\”隔開各層資料夾,如:F:\Funny\22\renxi,在資料夾和檔案命名時,不能包含\ / : * ? ” < > |等字元。基於這些原則,我們可以編寫用於匹配的整個表示式。正則表示式的語法就不詳細介紹啦,網上一搜一大把,不會的話可以直接看這篇文章:正則表示式30分鐘入門教程。講得很詳細,一看就懂。下面就直接上編好的正則表示式啦。
匹配檔名或資料夾名的正則表示式: “^[^\/:*\?\”“\<>|,]+$”
匹配完整路徑的正則表示式 “^([a-zA-Z]:\)?[^\/:*\?\”“\<>|,]*$”
使用示例如下:
if (rTxtSavePath.Text != "")
{
Regex regex = new Regex(@"^([a-zA-Z]:\\)?[^\/\:\*\?\""\<\>\|\,]*$");
Match m = regex.Match(rTxtSavePath.Text);
if (!m.Success)
{
MessageBox.Show("非法的檔案儲存路徑,請重新選擇或輸入!");
return;
}
regex = new Regex(@"^[^\/\:\*\?\""\<\>\|\,]+$");
m = regex.Match(rTxtFileName.Text);
if (!m.Success)
{
MessageBox.Show("請勿在檔名中包含\\ / : * ? \" < > |等字元,請重新輸入有效檔名!");
return;
}
}
注意,在C#中使用正則表示式類時,需要先新增引用using System.Text.RegularExpressions;