Поиск подстрок (Метод 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] содержит массив вхождений второй подмаски (не буквы).Спасибо. |
<телепат>
На php пишете? </телепат> Даже с флагом global match возвращает простой массив (не двумерный) совпавших вхождений. Было там что-нибудь для запоминания / не было - никого не волнует. В результирующем массиве этих данных не будет. А result[1][0] на самом деле не что иное как result[1].charAt(0), т.к. result[1] - строка. Поэтому запускайте цикл и на каждой итерации применяйте регэксп без флага global (Тут вообще больше exec подойдет). P.S. resource пишется немного по-другому. |
Так как задача описана сейчас - можно реализовать разным способами, но, скорее всего, это будет решением далеким от требуемого. Скорее всего автору надо бы описать подробнее запросы, а еще лучше - показать, для чего это все надо. Возможно после этого можно было бы предложить правильное решение.
|
Цитата:
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]); |
Мне кажется, что автору надо что-то вроде этого:
var s = 'dY%bd#!cL!%h#dY*'; var r = s.match(/\w+|\W+/g); alert(r.join('\n')); но только "раскиданное" по двум массивам - один цифробуквенные подстроки, другой - остальные символы. Автор не смог ясно и толково объяснить что же он хочет получить в результате - то есть что на входе мы знаем, а что на выходе - нет. В общем. это гадание чистой воды и заниматься телепатией не хочется. |
Часовой пояс GMT +3, время: 16:23. |