Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Разбираюсь с RegExp. (https://javascript.ru/forum/misc/52701-razbirayus-s-regexp.html)

Tsamsiyu 02.01.2015 15:08

Разбираюсь с RegExp.
 
Всем привет, есть небольшая задача: распарсить строку такого вида:
' getDevice22 ( a , b, asd , j,i ) '

Пробелы естественно были проставлены умышленно дабы включить все возможные ситуации. Составил для этого регулярку:
var expr = ' getDevice22 ( a , b, asd , j,i ) ';
var reg = /^\s*\w+\s*[(]{1}\s*(\w+(\s*,{1}\s*\w+)*)*\s*[)]{1}\s*$/i;
alert(reg.test(expr));

Все работает, но вот вторая задача это вытащить массив аргументов(без пробелов естественно), так вот с регулярками я только знакомлюсь и пока не хватает знаний с этим справиться, прошу помощи.
Начинал писать что-то вроде:
\w*(?=\s*[,]*\s*|\s*[)]{1})\gi

т.е. это выбор самих аргументов(которых может не быть), но я не знаю как начать этот выбор не с начала строки.

krutoy 02.01.2015 15:33

Проще всего в 2 прохода
expr=' getDevice22 ( a , b, asd , j,i ) '
alert(expr.match(/\(.*\)/g)[0].match(/\w+/g))

Deff 02.01.2015 15:41

var str =' getDevice22 ( a , b, asd , j,i) ';
str = str.replace(/\s+/g,'');
var arg = str.replace(/.*?\((.+)\).*/,'$1'.split(','));
if(arg!=str) alert(arg);
else alert('Не найдено!')

Tsamsiyu 03.01.2015 02:11

Разбираюсь с RegExp.
 
Спасибо, я и сам разобрался и из ответов почерпнул кое-что новое.


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