Welcome to OStack Knowledge Sharing 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 Answer

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)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...