Чтобы помочь вам, то, что вы пишете, не является регулярным выражением.test.split("/(\?|\.|!)/");
- это просто строка из 11 символов.Регулярное выражение будет, например, test.split(/(\?|\.|!)/);
.Это все равно не будет искомым регулярным выражением.
Проблема с этим регулярным выражением заключается в том, что он ищет ?
, .
или !
символ только и захватить этого одинокого персонажа.Вам нужно найти любое количество символов, за которым следует один из этих трех символов.
Далее String.split не принимает регулярные выражения в качестве аргументов.Вы захотите использовать функцию, которая принимает их (например, String.match ).
Собрав все это вместе, вы захотите начать свое регулярное выражение с чем-то вроде этого: /.*?/
.Точка означает совпадение любого символа, звездочка означает 0 или более, а вопросительный знак означает «не жадный» или попытайтесь найти как можно меньше символов, сохраняя при этом действительное совпадение.
Для поискатри символа, после этого вы должны указать /[?!.]/
, чтобы указать, что вам нужен один из этих трех символов (пока у нас есть /.*?[?!.]/
).Наконец, вы хотите добавить флаг g, чтобы он выполнял поиск для каждого экземпляра, а не только для первого./.*?[?!.]/g
.Теперь мы можем использовать его в match
:
const rawText = `abc?aaa.abcd?.aabbccc!`;
const matchedArray = rawText.match(/.*?[?!.]/g);
console.log(matchedArray);