Почему это регулярное выражение делит вторую двойную кавычку, а не первую двойную кавычку? - PullRequest
2 голосов
/ 22 апреля 2020

У меня есть это регулярное выражение:

let regex = /(?=\.|[\"])/;
test = "\"test.test\""
test.split(regex)

, которое выводит:

[""test", ".test", """]

, тогда как я хочу

[""", "test", ".test", """]

Я не могу понять, почему он разделяет секунду двойная кавычка, но не первая двойная кавычка

PS: должен сохранять ".test" таким образом (а не "." "test")

1 Ответ

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

Это не чисто решение регулярных выражений, но вы можете использовать это регулярное выражение с группой захвата и фильтровать пустые результаты:

const str = '"test.test"';

var arr = str.split(/(")|(?=\.)/).filter(Boolean)

console.log(arr)

Проблема с вашим подходом:

В вашем регулярном выражении используется предположение, которое можно сократить до:

(?=[."])

Что означает совпадение с совпадением нулевой ширины, которое имеет либо точку, либо " в непосредственной следующей позиции.

Поскольку ваш ввод имеет " в начале, он соответствует позиции 0, тогда позиция перед точкой и, наконец, позиция перед последним закрытием " (всего 3 совпадения).

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