У меня была функция:
function parseDevName(name) {
var re = /^([^-]+)-([^-]+)-([^-]+)$/g;
var match = re.exec(name);
return match.slice(1,4);
}
var rv = parseDevName("BR-H-01");
rv = parseDevName("BR-H-01");
Первый звонок работает.
Второй звонок нет. Операция slice
жалуется на нулевое значение. Я предполагаю, что это из-за re.lastIndex
. Это странно, потому что я ожидал, что новый RegExp
будет назначаться каждый раз, когда вызывается функция, а не совместно использоваться несколькими вызовами моей функции.
Когда я изменил его на:
var re = new RegExp('^([^-]+)-([^-]+)-([^-]+)$', 'g');
Тогда я не получаю эффект удержания lastIndex
. Это работает так, как я ожидал.