Как извлечь "folder" и "asd/asd" из строки "\folder/asd\asd/"?

Как я могу извлечь раздел "folder" и все подразделы после него из адреса, который пользователь вводит в input? Адрес может содержать комбинацию прямых и обратных слешей. Ранее я использовал метод .split(/[\/\\]/), но у меня возникли проблемы с удалением слешей из результата. Предложенный код не устроил меня, так как вывод содержал '\\folder/asd\\asd'. Есть ли более простой способ выполнить это действие, возможно без использования split?
  • 15 декабря 2023 г. 0:46
Ответы на вопрос 2
Да, можно использовать метод `.match()` с регулярным выражением для этой задачи. 

Вот пример кода, который извлекает "folder" и все подразделы после него из строки адреса:

```javascript
const address = "\\folder/asd\\asd/";
const regex = /(?:\\|\/)([^\\/]+)/g;

const matches = address.match(regex);
const result = matches.map(match => match.replace(/\\|\//g, ''));

const folder = result[0];
const subfolders = result.slice(1);

console.log(folder); // "folder"
console.log(subfolders); // ["asd", "asd"]
```

В данном примере мы используем регулярное выражение `/(?:\\|\/)([^\\/]+)/g`, которое ищет все соответствия, начинающиеся с прямого или обратного слеша и захватывает все символы после него, кроме слешей. Затем с помощью метода `.match()` мы получаем массив соответствующих строк.

Далее мы удаляем все оставшиеся слеши из каждого элемента массива, используя метод `.replace(/\\|\//g, '')`. 

И, наконец, мы сохраняем "folder" в переменную `folder`, а все подразделы после него в переменную `subfolders`.

В результате выводятся "folder" и ["asd", "asd"].
(?<=^[/\\]*)[^/\\]+(?=[/\\]+(.*)) 

folder будет в совпадении
остальное после слеша - в первой скобой группе
Похожие вопросы