Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.08.2014, 23:12
Аватар для kiberkun
Интересующийся
Отправить личное сообщение для kiberkun Посмотреть профиль Найти все сообщения от kiberkun
 
Регистрация: 30.05.2014
Сообщений: 21

Помощь с регулярным выражением из |
Сделал как мог скрипт:
var r = '[a]urlAva[/a][n]FullName[/n][m]Message[/m]',
    i = r.split("[a]")[1].split("[/a]")[0],
    s = r.split("[n]")[1].split("[/n]")[0],
    o = r.split("[m]")[1].split("[/m]")[0];
alert(i + s + o);


Но как то банально?
Если будет у меня var r = 'urlAva|FullName|Message';

Какой регуляркой можно получить нужные мне данные?
Ответить с цитированием
  #2 (permalink)  
Старый 18.08.2014, 00:19
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,518

var str = [];
'[a]urlAva[/a][n]FullName[/n][m]Message[/m]'.replace(/\[([^\]+])]([^\[\]]+)\[\/\1\]/g, function(a,b,c){
    str.push(c);
});
alert(str.join('|'))
Но тут без вложенности. Если со вложенностью - придётся работать либо циклично либо рекурсивно и вручную.

Во втором случае .split('|'), какие проблемы?)
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 18.08.2014, 10:41
Аватар для kiberkun
Интересующийся
Отправить личное сообщение для kiberkun Посмотреть профиль Найти все сообщения от kiberkun
 
Регистрация: 30.05.2014
Сообщений: 21

А если будет вот так: var text = 'urlAva|FullName|Message';
как получить данные с каждого | по отдельности?

urlAva
FullName
Message

Регуляркой не получится?
Ответить с цитированием
  #4 (permalink)  
Старый 18.08.2014, 10:50
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

kiberkun,
var text = 'urlAva|FullName|Message';
alert(text.split("|"))
Ответить с цитированием
  #5 (permalink)  
Старый 18.08.2014, 10:51
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,518

Ещё раз: зачем что-то городить?
alert( 'urlAva|FullName|Message'.split('|') )
если очень хочется - нате вам с регулярной
alert( 'urlAva|FullName|Message'.split(/\|/) )


Если же прямо таки вожделеете сделать через задницу, то можно и так:
alert( 'urlAva|FullName|Message'.match(/[^|]+(?=\||$)/g) )
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 18.08.2014, 16:21
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Сообщение от Aetae
Если же прямо таки вожделеете сделать через задницу, то можно и так
можно вроде еще проще
alert('urlAva|FullName|Message'.match(/[^|]+/g))
Ответить с цитированием
  #7 (permalink)  
Старый 18.08.2014, 19:12
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,518

Pavel M., логично.)
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с регулярным выражением prope Общие вопросы Javascript 2 03.01.2014 20:43
помогите с регулярным выражением Axios Элементы интерфейса 3 13.01.2013 20:47
Нужно обрезать путь до файла регулярным выражением javascript_pupil Общие вопросы Javascript 3 22.11.2010 11:46
Извлечь значение параметра из location.search регулярным выражением? Бобр Общие вопросы Javascript 8 26.01.2010 01:01