2016-12-29 1 views
1

Я начинаю изучать регулярное выражение в Javascript, могу ли я это сделать?Как разбить строку по регулярному выражению при сохранении разделителя в массиве

Представьте У меня есть следующая строка:

Car ball car ball circle happy 

И я хочу, чтобы соответствовать всем вместо мяч, выход, как:

["Car", "car", "circle happy"] 

Или, раскол, когда я нахожу мяч в моей строке:

["Car", "ball", "car", "ball", "circle happy"] 

Как я могу это сделать?

+2

Простейшего ввода недостаточно. – revo

+1

Привет и добро пожаловать в StackOverflow! Обязательно прочитайте [как спросить] (https://stackoverflow.com/help/how-to-ask), чтобы убедиться, что вы получите ответы высокого качества! – mhutter

+0

Я имею в виду что-то вроде (раскол, только когда вы находите «мяч») –

ответ

2

Вы можете разделить с /(ball)/ (или для учета целого слова, добавьте \b границы слова вокруг шаблона). Обертывание всего шаблона с помощью скобок выведет согласованные части строки в результирующий массив.

var s = 'Car ball car ball circle happy'; 
 
console.log(s.split(/(ball)/).map(function(x) { return x.trim();}));

Если вы не нуждаетесь в ball для вывода в результирующем массиве, опустить захваченным, используйте простую /ball/.

Если вам необходимо сделать шаблонный регистр нечувствительным, используйте модификатор /i: /(ball)/i.

2

Вы можете разделить на 'ball', чтобы получить ответ на свой вопрос, как:

["Car", "car", "circle happy"] 

Или '(ball)', чтобы получить ответ на свой вопрос, как:

["Car","ball","car","ball","circle happy"] 

var str="Car ball car ball circle happy"; 
 
var vals=str.split(/ball/i).map(String.trim); 
 
console.log(vals); 
 

 
// Or 
 

 
var valsAll=str.split(/(ball)/i).map(String.trim); 
 
console.log(valsAll);

+0

Вам не нужен модификатор 'g' с операцией разделения regex в JavaScript, это поведение по умолчанию. –

 Смежные вопросы

  • Нет связанных вопросов^_^