Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.01.2011, 22:30
Интересующийся
Отправить личное сообщение для Игорь87 Посмотреть профиль Найти все сообщения от Игорь87
 
Регистрация: 13.02.2010
Сообщений: 10

Поиск подстрок (Метод match)
Здравствуйте!

Есть строка 'dY%bd#!cL!%h#dY*'.Нужно заполнить массив буквы подряд и не буквы подряд.
делаю так :
var resorse = 'dY%bd#!cL!%h#dY*';
var result = resorse.match(/([a-zA-Z]+)([^a-zA-Z]+)/g);
alert(result[1]); //Выводит 'bd#!'
alert(result[1][0]); //Выводит 'b',а нужно 'bd';
alert(result[1][1]); //Выводит 'd',а нужно '#!';

Возможно ли чтобы result[1] содержал массив полных вхождений шаблона,элемент result[1][0] содержит массив вхождений первой подмаски (буквы),элемент result[1][1] содержит массив вхождений второй подмаски (не буквы).Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 02.01.2011, 22:48
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

<телепат>
На php пишете?
</телепат>
Даже с флагом global match возвращает простой массив (не двумерный) совпавших вхождений. Было там что-нибудь для запоминания / не было - никого не волнует. В результирующем массиве этих данных не будет.
А result[1][0] на самом деле не что иное как result[1].charAt(0), т.к. result[1] - строка.

Поэтому запускайте цикл и на каждой итерации применяйте регэксп без флага global (Тут вообще больше exec подойдет).

P.S. resource пишется немного по-другому.

Последний раз редактировалось B@rmaley.e><e, 02.01.2011 в 22:51.
Ответить с цитированием
  #3 (permalink)  
Старый 02.01.2011, 23:22
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

Так как задача описана сейчас - можно реализовать разным способами, но, скорее всего, это будет решением далеким от требуемого. Скорее всего автору надо бы описать подробнее запросы, а еще лучше - показать, для чего это все надо. Возможно после этого можно было бы предложить правильное решение.
Ответить с цитированием
  #4 (permalink)  
Старый 03.01.2011, 01:01
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Сообщение от with-love-from-siberia Посмотреть сообщение
Так как задача описана сейчас - можно реализовать разным способами, но, скорее всего, это будет решением далеким от требуемого.
Так как задача подана сейчас - можно решить только анальным способом. Все внимание сюда:
alert(result[1]); //Выводит 'bd#!'
alert(result[1][0]); //Выводит 'b',а нужно 'bd';
alert(result[1][1]); //Выводит 'd',а нужно '#!';



Нет, можно конечно сделать и как-то так, лол:
result=[[],['bd','#!','bd#!']]
Array.prototype.toString=function(){return this[2]}
alert(result[1]); 
alert(result[1][0]); 
alert(result[1][1]);



...а решение то вот:
var r = /([a-z]+)([^a-z]+)/gi;
var str = 'dY%bd#!cL!%h#dY*';
var result=[],i=0;
while(result[i++]=r.exec(str));
alert(result[1][0]);
alert(result[1][1]);
alert(result[1][2]);

Последний раз редактировалось Aetae, 03.01.2011 в 01:27.
Ответить с цитированием
  #5 (permalink)  
Старый 03.01.2011, 13:23
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

Мне кажется, что автору надо что-то вроде этого:
var s = 'dY%bd#!cL!%h#dY*';
var r = s.match(/\w+|\W+/g);
alert(r.join('\n'));

но только "раскиданное" по двум массивам - один цифробуквенные подстроки, другой - остальные символы.

Автор не смог ясно и толково объяснить что же он хочет получить в результате - то есть что на входе мы знаем, а что на выходе - нет. В общем. это гадание чистой воды и заниматься телепатией не хочется.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в тексте javascript jQuery 3 31.05.2011 11:40
PagingToolbar и поиск DenQ ExtJS 5 02.11.2010 00:16
RegExp - Глобальный поиск c запоминанием р-тов retator Общие вопросы Javascript 1 11.08.2010 22:53
Как узнать у какого объекта вызван метод. Scalar Events/DOM/Window 4 26.03.2010 11:10
Добавить свой метод к элементу alekciy Events/DOM/Window 6 16.02.2009 19:29