Regex: почему; не хранится в конце - PullRequest
0 голосов
/ 19 апреля 2020

Я все еще отстой в регулярных выражениях. Я попробовал в chrome dev tools:

  regex = /\s|[(\;)]/;
  test = "test test-test-test test;"
  test.split(regex);

Это не сохранилось ";"

["test", "test-test-test", "test", ""]

, тогда как я хотел получить

["test", "test-test-test", "test", ";"]

Ответы [ 2 ]

2 голосов
/ 19 апреля 2020

Ваш [(\;)] будет соответствовать (, ; или ). Если вы хотите, чтобы это была группа захвата, переместите ее за пределы набора символов и отфильтруйте пустые / неопределенные результаты, чтобы учесть, когда группа захвата не соответствует. Поскольку все, что вы хотите сопоставить, это ;, вам больше не понадобится набор символов:

regex = /\s|(;)/;
test = "test test-test-test test;"
console.log(test.split(regex).filter(Boolean));
1 голос
/ 19 апреля 2020

Подумайте о разделении на следующее немного обновленное регулярное выражение:

\s|(?=;)

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

test = "test test-test-test test;"
var out = test.split(/\s|(?=;)/);
console.log(out);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...