Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.5k views
in Technique[技术] by (71.8m points)

regex - Validate folder name in C#

I need to validate a folder name in c#.

I have tried the following regex :

 ^(.*?/|.*?\)?([^./|^.\]+)(?:.([^\]*)|)$

but it fails and I also tried using GetInvalidPathChars().

It fails when i try using P:abc as a folder name i.e Driveletter:foldername

Can anyone suggest why?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You could do that in this way (using System.IO.Path.InvalidPathChars constant):

bool IsValidFilename(string testName)
{
    Regex containsABadCharacter = new Regex("[" + Regex.Escape(System.IO.Path.InvalidPathChars) + "]");
    if (containsABadCharacter.IsMatch(testName) { return false; };

    // other checks for UNC, drive-path format, etc

    return true;
}

[edit]
If you want a regular expression that validates a folder path, then you could use this one:

Regex regex = new Regex("^([a-zA-Z]:)?(\\[^<>:"/\\|?*]+)+\\?$");

[edit 2]
I've remembered one tricky thing that lets you check if the path is correct:

var invalidPathChars = Path.GetInvalidPathChars(path)

or (for files):

var invalidFileNameChars = Path.GetInvalidFileNameChars(fileName)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...