Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помощь с регулярным выражением из | (https://javascript.ru/forum/misc/49545-pomoshh-s-regulyarnym-vyrazheniem-iz-%7C.html)

kiberkun 17.08.2014 23:12

Помощь с регулярным выражением из |
 
Сделал как мог скрипт:
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';

Какой регуляркой можно получить нужные мне данные?

Aetae 18.08.2014 00:19

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('|'), какие проблемы?)

kiberkun 18.08.2014 10:41

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

urlAva
FullName
Message

Регуляркой не получится?

tsigel 18.08.2014 10:50

kiberkun,
var text = 'urlAva|FullName|Message';
alert(text.split("|"))

Aetae 18.08.2014 10:51

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


Если же прямо таки вожделеете сделать через задницу, то можно и так:
alert( 'urlAva|FullName|Message'.match(/[^|]+(?=\||$)/g) )

Pavel M. 18.08.2014 16:21

Цитата:

Сообщение от Aetae
Если же прямо таки вожделеете сделать через задницу, то можно и так

можно вроде еще проще
alert('urlAva|FullName|Message'.match(/[^|]+/g))

Aetae 18.08.2014 19:12

Pavel M., логично.)


Часовой пояс GMT +3, время: 03:32.