Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.01.2010, 10:53
Кандидат Javascript-наук
Отправить личное сообщение для Бобр Посмотреть профиль Найти все сообщения от Бобр
 
Регистрация: 03.11.2008
Сообщений: 116

split для поисковой строки
В поисковых строках обычно когда надо найти фразу, то её берут в кавычки. Например:

word "big phrase"

Это значит, что надо найти слово word и фразу big phrase. Какое регулярное выражение в split надо использовать, чтобы преобразовывать такие поисковые запросы в массив строк?

Элементы массива должны быть такими:
1) word
2) big phrase

Как это сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 30.01.2010, 11:54
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

var str = 'word "big phrase" word "big phrase"', words = [];
str.replace(/"([^"]*)"|[\S]+/g, function(word, phrase) {
    words.push(phrase || word);
});
alert(words.join('\n'));
Например.
Ответить с цитированием
  #3 (permalink)  
Старый 30.01.2010, 13:16
Кандидат Javascript-наук
Отправить личное сообщение для Бобр Посмотреть профиль Найти все сообщения от Бобр
 
Регистрация: 03.11.2008
Сообщений: 116

Сообщение от Kolyaj Посмотреть сообщение
var str = 'word "big phrase" word "big phrase"', words = [];
str.replace(/"([^"]*)"|[\S]+/g, function(word, phrase) {
    words.push(phrase || word);
});
alert(words.join('\n'));
Например.
Я воткнул это регулярное выражение в split, но почему-то помещает в массив только фразы, а отдельные слова - нет.

var str = 'word "big phrase" word "big phrase"';
  var words = str.split(/"([^"]*)"|[\S]+/g);
  alert(words.join('\n'));
Ответить с цитированием
  #4 (permalink)  
Старый 30.01.2010, 14:21
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Так не надо его в split засовывать.
Ответить с цитированием
  #5 (permalink)  
Старый 30.01.2010, 14:37
Кандидат Javascript-наук
Отправить личное сообщение для Бобр Посмотреть профиль Найти все сообщения от Бобр
 
Регистрация: 03.11.2008
Сообщений: 116

Сообщение от Kolyaj Посмотреть сообщение
Так не надо его в split засовывать.
Просто хочется, чтобы коротко было.
Ответить с цитированием
  #6 (permalink)  
Старый 30.01.2010, 16:28
Кандидат Javascript-наук
Отправить личное сообщение для Бобр Посмотреть профиль Найти все сообщения от Бобр
 
Регистрация: 03.11.2008
Сообщений: 116

Ещё вопрос. Если перед " забыть поставить пробел, то будет найдено слово
word"big
А если в конце фразы случайно поставить лишний пробел "big phrase ", то он так и останется. Как бы это в регулярном выражении поправить?
Ответить с цитированием
  #7 (permalink)  
Старый 30.01.2010, 16:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

var str = 'word" big phrase " word "big phrase"', words = [];
str.replace(/"\s*([^"]*?)\s*"|[^\s"]+/g, function(word, phrase) {
    words.push(phrase || word);
});
alert(words.join('\n'));
Ответить с цитированием
  #8 (permalink)  
Старый 30.01.2010, 21:46
Кандидат Javascript-наук
Отправить личное сообщение для Бобр Посмотреть профиль Найти все сообщения от Бобр
 
Регистрация: 03.11.2008
Сообщений: 116

Спасибо!
Где-бы мне подучиться регулярным выражениям?
Ответить с цитированием
  #9 (permalink)  
Старый 30.01.2010, 21:48
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://yandex.ru/yandsearch?text=%D0...fx3&clid=46510
Кроме этой книги не нужно ничего.
Ответить с цитированием
  #10 (permalink)  
Старый 30.01.2010, 23:24
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Kolyaj
Кроме этой книги не нужно ничего.
+1 Хорошая книга. начал читать и не мог остановится. Легкочитается и все понятно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
нужна программа для этого. Чем писать? javascript или php? spam-server Серверные языки и технологии 3 27.08.2009 00:52
Для события onCLick получить индекс строки и объект грида. progi2007 ExtJS 4 05.08.2009 11:31
Переодическое обновление значений для графика, функция для обновления значений yupa87 Общие вопросы Javascript 0 09.07.2009 14:48