Регулярное выражение для соответствия допустимым путям в структуре папок - PullRequest
1 голос
/ 02 апреля 2020

Как мне написать регулярное выражение для соответствия всем допустимым путям в структуре виртуальной папки?

Скажем, у меня есть структура виртуальной папки, представленная в виде строки:

foo/bar/baz

Тогда должны соответствовать следующие строки:

  • foo (и возможно foo/)
  • foo/bar (и, возможно, foo/bar/)
  • foo/bar/baz (и, возможно, foo/bar/baz/)

, но эти строки НЕ должны совпадать:

  • foo/ba
  • foo/bar/b

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Ваш матч должен совпадать с начала и до sla sh или до конца укуса.

Это дает следующее регулярное выражение:

/^yourstring(\/|$)/

где 'yourstring 'может быть:

foo
foo/bar
foo/bar/baz
etc

, но не:

foo/b
foo/ba
etc

Строка для проверки всегда является полным путем, например:

foo/bar/baz
0 голосов
/ 02 апреля 2020

Вы можете использовать этот шаблон ^(\w+\/?)+$; \w - это то же самое, что и [a-zA-Z0-9_]

. Вот демонстрация в js

function isValid(str){
  return /^(\w+\/?)+$/.test(str)
}

console.log(isValid("foo"))
console.log(isValid("foo/"))
console.log(isValid("for/bar/baz"))
console.log(isValid("for/bar/baz/"))
//invalid filenames
console.log(isValid("for/bar//"))
console.log(isValid("rdxrc/+"))
console.log(isValid(";/lllj/ii/"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...