Разбираюсь с 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
т.е. это выбор самих аргументов(которых может не быть), но я не знаю как начать этот выбор не с начала строки. |
Проще всего в 2 прохода
expr=' getDevice22 ( a , b, asd , j,i ) ' alert(expr.match(/\(.*\)/g)[0].match(/\w+/g)) |
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('Не найдено!')
|
Разбираюсь с RegExp.
Спасибо, я и сам разобрался и из ответов почерпнул кое-что новое.
|
| Часовой пояс GMT +3, время: 23:55. |