Нужна помощь с регулярными выражениями Javascript - Разделение текста - PullRequest
0 голосов
/ 31 июля 2010

У меня есть строка, представляющая список тегов, разделенных пробелом. Это может выглядеть так:

Australia 2010 David November Family

Если тег содержит хотя бы один пробел, он должен быть заключен в кавычки. Таким образом, строка может быть:

"Best Friends" "My Pictures" Wow "Very Nice Photo" University

Цитаты также допускаются для отдельных слов. Например:

"Good One" Fantastic "February" "My Family" "Friends"

Вопрос:
Как бы вы получили массив тегов из строки?
Например, из третьей строки я хотел бы получить следующий массив:

arr[0] = "Good One"
arr[1] = "Fantastic"
arr[2] = "February"
arr[3] = "My Family"
arr[4] = "Friends"

Если строка не в правильном формате, я хотел бы знать об этом (например: получить пустой массив в результате).

1 Ответ

3 голосов
/ 31 июля 2010

Вы можете использовать регулярное выражение типа /"[^"]+"|\w+/ для соответствия тегам. Чтобы получить массив, содержащий все совпадения без кавычек, вы можете использовать что-то вроде

var re = /"[^"]+"|\w+/g;
var result = [];
var match;
while(match = re.exec(input))
    result.push(match[0].replace(/"/g, ""));

Если вам не нужно удалять кавычки, вы можете просто использовать

var result = input.match(re);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...