Javascript.RU

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

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

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

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

Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 03.07.2015, 21:28
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

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

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

result: ["test", "0", "array", "1"]
Ответить с цитированием
  #3 (permalink)  
Старый 03.07.2015, 21:33
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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

Последний раз редактировалось Deff, 03.07.2015 в 21:37.
Ответить с цитированием
  #4 (permalink)  
Старый 03.07.2015, 21:36
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Сообщение от Deff Посмотреть сообщение
var str = "test[0].array[1]";
var out = str.replace(/([^\.]*?)\[(.*?)\]/g,'"$1","$2"').replace('.',',');
alert(out)
Спасибо! Но в кавычками беда(
Ответить с цитированием
  #5 (permalink)  
Старый 03.07.2015, 21:38
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

var str = "test[0].array[1]";
alert( str.match(/\w+/g) );
Ответить с цитированием
  #6 (permalink)  
Старый 03.07.2015, 21:38
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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

Последний раз редактировалось Deff, 04.07.2015 в 01:51.
Ответить с цитированием
  #7 (permalink)  
Старый 03.07.2015, 21:40
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Deff,
Спасибо!
Ответить с цитированием
  #8 (permalink)  
Старый 03.07.2015, 21:41
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Decode,
Спасибо! Очень красивое решение)
Ответить с цитированием
  #9 (permalink)  
Старый 03.07.2015, 21:44
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Deff,
просто может быть и так
"test[0][2].array[1][2][3]"
Ответить с цитированием
  #10 (permalink)  
Старый 03.07.2015, 22:47
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

alert( "test[0][2].array[1][2][3]".split(/\[|\][\.\[]?/) );
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение tata4ka Общие вопросы Javascript 4 15.11.2014 00:56
Регулярное выражение и метод test tsigel Общие вопросы Javascript 3 30.08.2013 13:47
регулярное выражение literator Ваши сайты и скрипты 1 18.08.2013 18:24
Регулярное выражение: любой символ, включая перевод строки Gleb Общие вопросы Javascript 3 28.07.2011 12:15
регулярное выражение theo_ Общие вопросы Javascript 15 21.06.2010 10:29