Вход

Просмотр полной версии : Помощь с регулярным выражением из |


kiberkun
17.08.2014, 23:12
Сделал как мог скрипт:
var r = 'urlAvaFullNameMessage',
i = r.split("")[1].split("")[0],
s = r.split("")[1].split("")[0],
o = r.split("")[1].split("")[0];
alert(i + s + o);

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

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

Aetae
18.08.2014, 00:19
var str = [];
'urlAvaFullNameMessage'.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
Если же прямо таки вожделеете сделать через задницу, то можно и так
можно вроде еще проще

alert('urlAva|FullName|Message'.match(/[^|]+/g))

Aetae
18.08.2014, 19:12
Pavel M., логично.)