Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение (https://javascript.ru/forum/misc/56778-regulyarnoe-vyrazhenie.html)

Dorian_bs 03.07.2015 21:21

Регулярное выражение
 
Всем привет!
К сожалению в регулярных выражениях не силен(((
Помогите разбить строку в массив по аналогии со split:

// На вход
var str = "test[0].array[1]";

// На выход
var result = ["test", 0, "array", 1];

Заранее спасибо! :) :victory:

Dorian_bs 03.07.2015 21:28

Реализовал в таком виде, но уверен, что есть более красивые варианты)

"test[0].array[1]".replace(/\[/g, '.').replace(/]/g, '').split('.');

result: ["test", "0", "array", "1"]

Deff 03.07.2015 21:33

var str = "test[0].array[1]";
var out = str.replace(/([^\.]*?)\[(.*?)\]/g,'"$1",$2').replace('.',',');
alert(out)

Dorian_bs 03.07.2015 21:36

Цитата:

Сообщение от Deff (Сообщение 377575)
var str = "test[0].array[1]";
var out = str.replace(/([^\.]*?)\[(.*?)\]/g,'"$1","$2"').replace('.',',');
alert(out)

Спасибо! Но в кавычками беда(

Decode 03.07.2015 21:38

var str = "test[0].array[1]";
alert( str.match(/\w+/g) );

Deff 03.07.2015 21:38

Dorian_bs,
Вы правите исходник задачи то так то эдак, поправил цифры без кавычек
По идее, логичнее бы объектовую запись
result: {"test":0, "array":1}

Dorian_bs 03.07.2015 21:40

Deff,
Спасибо!

Dorian_bs 03.07.2015 21:41

Decode,
Спасибо! Очень красивое решение)

Dorian_bs 03.07.2015 21:44

Deff,
просто может быть и так
"test[0][2].array[1][2][3]"

Aetae 03.07.2015 22:47

alert( "test[0][2].array[1][2][3]".split(/\[|\][\.\[]?/) );


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