Хотелось бы глубже разобраться в нюансах javascript.
Возьмите функцию ниже:
str.replace(/(\b[^:]+):'([^']+)'/g, function ($0, param, value) {
ret[param] = value;
});
- Зачем нужен / g?
- Что именно передается в функцию?
- Откуда эти ценности?
Благодарность!
2 ответа
Зачем нужен / g?
Поскольку предположительно у вас будет несколько пар в строке соответствия, например a:'b' c:'d'
Что именно передается в функцию?
Функция обратного вызова получает полное совпадение в качестве первого аргумента, два последующих аргумента - это группы захвата, указанные в вашем регулярном выражении.
Например:
"a:'b' c:'d'".replace(/(\b[^:]+):'([^']+)'/g, function ($0, param, value) {
console.log($0, param, value);
});
Обратный вызов будет выполнен дважды, и он покажет вам "a:'b'"
для $0
, "a"
для param
и "b"
для value
при первом исполнение.
Во втором выполнении -для второго совпадения- вы увидите "c:'d'"
для $0
, "c"
для param
и "d"
для значения.
G in / g означает глобальный. Убедитесь, что все спички заменены. При отсутствии / g заменяется только первое совпадение. / i (игнорировать регистр) - еще один часто используемый переключатель.
Каждый раз, когда механизм javascript находит совпадение (для вашего регулярного выражения) в строке, он вызывает переданную вами функцию с параметрами для каждого совпадения.
Подробно объяснено здесь
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.