2008-11-20 3 views
1

В .NET есть функция, которая проверяет, является ли строка синтаксически правильным путем? Я специально не хочу, чтобы он тестировал, действительно ли путь существует.Тест для синтаксически правильного пути

мой текущий взгляд на это регулярное выражение:

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

матчи:

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

отвергает:

xy: 
c:\\bob 

ответ

1

Я хотел бы предложить только с помощью регулярных выражений для этого, поскольку вы в частности, не хотят проверять, существует ли путь.

Вот что-то google helped me dig up:

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

Вы можете совместить это с System.IO.Path.GetInvalidPathChars() метод и сделать регулярное выражение динамически исключить все недопустимые символы.

+0

WT .. это ускользнуло? Я не могу сделать головы или хвосты. – BCS 2008-11-20 23:11:42

0

Возможно, вы можете использовать System.IO.Path и функцию GetInvalidPathChars()?

3

Я считаю, что System.IO.Path.GetFullPath (path) генерирует исключение, если это не синтаксически правильный путь, не проверяя, существует ли он.

+0

Если это работает, хорошо, но случай сбоя так же важен для меня, как и в случае пропуска, я бы не выбрал/поймал. – BCS 2008-11-20 23:07:46

Смежные вопросы