Присоединение к регулярным выражениям lookahead и сохранение (всех) разделителей? - PullRequest
0 голосов
/ 02 июля 2018

Прямо сейчас мое регулярное выражение проходит через строку и разбивает ее по вхождениям /, сохраняя косую черту в массиве.

var str = 'File/path/to/a/file.js';
let delim = /[^\/]+\/?|\//g; 
var tokens = str.match(delim);
// ["File/","path/","to/","a/","file.js"]

В качестве упражнения я хотел бы также разделить на ., ? и !. Как я мог сделать это, не делая вещи слишком грязными? Я новичок, поэтому в идеале мне не хотелось бы иметь одну массивную строку регулярного выражения. В идеале я хотел бы создать массив регулярных выражений (каждый элемент массива обрабатывает один разделитель). Я пытался сделать это, но не смог.

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете использовать класс символов, чтобы включить все разделители, которые у вас есть после того, как вы сопоставите 1+ символов, которые соответствуют чему угодно, кроме тех разделителей в классе отрицанных символов:

var str = 'File/path/to/a/file.js';
let arr = str.match(/[^\/.?!]+(?:[\/.?!]|$)/g);

console.log(arr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...