Javascript.RU

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

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

word "big phrase"

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

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

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

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, 12:16
Кандидат Javascript-наук
Отправить личное сообщение для Бобр Посмотреть профиль Найти все сообщения от Бобр
 
Регистрация: 03.11.2008
Сообщений: 111

Сообщение от 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, 13:21
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,171

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

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

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

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, 20:46
Кандидат Javascript-наук
Отправить личное сообщение для Бобр Посмотреть профиль Найти все сообщения от Бобр
 
Регистрация: 03.11.2008
Сообщений: 111

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

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

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



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

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


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