1. 程式人生 > >C#中利用正則表示式檢測檔案路徑的合法性

C#中利用正則表示式檢測檔案路徑的合法性

專案中少不了讀取或設定檔案路徑的功能,如何才能對輸入的路徑是否合法進行判斷呢?用正則表示式是個不錯的方式。我們都知道檔案路徑的字串一般格式,首先是碟符,一般是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;