Test for a syntactically correct path
-
08-07-2019 - |
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
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?