Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.04.2013, 18:14
Новичок на форуме
Отправить личное сообщение для nixml Посмотреть профиль Найти все сообщения от nixml
 
Регистрация: 15.04.2013
Сообщений: 4

Как получать вхождения при поиске по регулярному выражению
Есть к примеру регулярное выражение
/\[name1=([^\]]*)\](([\S\s])*?)\[\/name1\]/g

и есть строка [name1=name3]text[/name1]

что мне нужно с этим всем сделать, чтобы вытащить из строки name3 и text?
Ответить с цитированием
  #2 (permalink)  
Старый 15.04.2013, 18:21
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Выделить каждый ткой фрагмент и применить ту же регулярку, но без флага 'g'.
Ответить с цитированием
  #3 (permalink)  
Старый 15.04.2013, 18:49
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

var s = "[name1=xxxx]yyyy[/name1]";
var re = /\[([^=]+)=([^\]]+)\]([^[]*)\[\/\1\]/;
var res = s.match(re);
alert( res[2] );
alert( res[3] );
Ответить с цитированием
  #4 (permalink)  
Старый 15.04.2013, 18:52
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,510

Сообщение от SV0L0CH Посмотреть сообщение
Выделить каждый ткой фрагмент и применить ту же регулярку, но без флага 'g'.
Не обязательно выделять вручную: exec.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 15.04.2013, 18:53
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

var s = "[name1=xxxx]yyyy[/name1]";
var re = /\[name1=([^\]]+)\]([^\[]*)\[\/name1\]/;
var res = s.match(re);
alert( res[1] );
alert( res[2] );
Ответить с цитированием
  #6 (permalink)  
Старый 15.04.2013, 19:00
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

var s = "[name1=xxxx0]yyyy0[/name1]zzzz[name1=xxxx1]yyyy2[/name1]zzzz[name1=xxxx3]yyyy3[/name1]";
alert(JSON.stringify(s.match(/\[name1=([^\]]+)\]([^\[]*)\[\/name1\]/g).map(function(a){
  var x = /\[name1=([^\]]+)\]([^\[]*)\[\/name1\]/.exec(a);
  x.shift();
  return x;
})));
Ответить с цитированием
  #7 (permalink)  
Старый 15.04.2013, 19:05
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,510

Сообщение от SV0L0CH Посмотреть сообщение
var s = "[name1=xxxx0]yyyy0[/name1]zzzz[name1=xxxx1]yyyy2[/name1]zzzz[name1=xxxx3]yyyy3[/name1]";
alert(JSON.stringify(s.match(/\[name1=([^\]]+)\]([^\[]*)\[\/name1\]/g).map(function(a){
  var x = /\[name1=([^\]]+)\]([^\[]*)\[\/name1\]/.exec(a);
  x.shift();
  return x;
})));
SV0L0CH, наркоман штоле?

Код практически из примера по моей ссылке:
var myRe = /\[name1=([^\]]*)\]([\S\s]*?)\[\/name1\]/g;
var str = "[name1=xxxx0]yyyy0[/name1]zzzz[name1=xxxx1]yyyy2[/name1]zzzz[name1=xxxx]yyyy[/name1]";
var myArray, result = [];
while ((myArray = myRe.exec(str)) != null)
{
  result.push(myArray);
}

alert(result.join('\n'))

И никаких маразматических лишних телодвижений.
А ответ один: безблагодат lastIndex.
__________________
29375, 35

Последний раз редактировалось Aetae, 15.04.2013 в 19:10.
Ответить с цитированием
  #8 (permalink)  
Старый 15.04.2013, 19:18
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Понял! При использовании exec флаг g не влияет на результат.
Ответить с цитированием
  #9 (permalink)  
Старый 15.04.2013, 19:51
Новичок на форуме
Отправить личное сообщение для nixml Посмотреть профиль Найти все сообщения от nixml
 
Регистрация: 15.04.2013
Сообщений: 4

Спасибо всем, попробую разобраться, просто я только начал учить язык.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по jquery. Как запретить один из скриптов при клике vuler Общие вопросы Javascript 1 07.03.2012 22:35
Как задать изменение src при прокрутке chandler Элементы интерфейса 3 12.01.2012 01:23
Как узнать какой скрипт вызывается при клике по эленету (если это прямо не прописано) Dmitriy Komar Events/DOM/Window 4 08.12.2011 17:21
Как узнать какие ошибки произошли при парсинге xml файла faunder Events/DOM/Window 0 12.09.2008 14:17
Подскажите как при помощи JS hta в трею свернуть kimboo Общие вопросы Javascript 4 11.07.2008 16:00