Question

In .NET is there a function that tests if a string is syntactically a correct path? I specifically don't want it to test if the path actually exists.

my current take on this is a regex:

([a-zA-Z]:|\\)?\\?([^/\\:*?"<>|]+[/\\])*[^/\\:*?"<>|]*

matches:

c:\
bbbb
\\bob/john\
..\..\

rejects:

xy:
c:\\bob
Was it helpful?

Solution

I'd suggest just using a regex for this since you specifically don't want to test if the path exists.

Here's something google helped me dig up:

RegEx="^([a-zA-Z]\:|\\\\[^\/\\:*?"<>|]+\\[^\/\\:*?"<>|]+)(\\[^\/\\:*?"<>|]+)+(\.[^\/\\:*?"<>|]+)$"

You could combine this with System.IO.Path.GetInvalidPathChars() method and make the regex dynamically exclude all of the invalid characters.

OTHER TIPS

I believe System.IO.Path.GetFullPath(path) will throw an exception if it is not a syntactically correct path without checking to see if it exists.

You might be able to use System.IO.Path and the GetInvalidPathChars() function?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top