2015-03-17 2 views
0

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

\\\computer-name\drive\optional_folder1\optional_folder2\

  1. начинается с 2-косой чертой с последующим именем компьютера, одной косой чертой, и букву диска. (Я получил эту часть)
  2. Заканчивается 0 или 1 косой чертой.
  3. Может иметь ноль или более одного слэша, за которым следует имя папки (\ папка).
  4. Нет кратных слэшей, кроме первого.

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

^((\\{2})([A-Za-z -._]+)(\\{1})([A-Za-z -._]+))(\\{1}([A-Za-z .-_])+)*(\\?)$

будет оценен Любые намеки.

Спасибо, ребята.

ответ

3

я упростил это немного:

^(\\)(\\[A-Za-z0-9-_]+){2,}(\\?)$ 

Так в основном вы хотите иметь

^(\\)    # start with slash 
(\\[A-Za-z0-9-_]+) # followed by group of slash and name 
{2,}    # which should be two or more times 
(\\?)$    # last slash(es) 

Демо: https://regex101.com/r/mD2yL7/1

+0

Это идеальное решение и лучший способ смотреть на него , Спасибо. Вы научили меня, как упростить критерии. – vleong

+0

Спасибо) Надеюсь, что это сработает, сообщите мне в случае возникновения проблем, по сравнению с вашим шаблоном вы не избежите косых червей и точек. Таким образом, могут возникнуть проблемы с вашим движком regex. – streetturtle

+0

Это регулярное выражение не удалось: 'String path =" String path = "\\\\ WIN-OTPNOBLC0AQ.myhacks.test.com \\ sysvol". Любая идея, почему это должно быть? – user1071840

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