Пытаюсь заменить все классы содержащие "-vol-"
var classes =
'vskin-btn vskin-btn-type-single vskin-btn-mute vskin-vol-high vskin-vow-high vskin-vol-low';
console.log(classes.replace(/\s([^\s]+?)-vol-([^\s$]+?)/g, ''));
// но, результат
// vskin-btn vskin-btn-type-single vskin-btn-muteigh vskin-vow-highow
// а ожидалось
// vskin-btn vskin-btn-type-single vskin-btn-mute vskin-vow-high
Шаблон начинается с пробела, затем любые символы кроме пробела до подстроки "-vol-", и еще символы кроме пробела и конца строки.
Как я считаю что должно происходить?
Первое вхождение будет сброшено на втором пробеле, второе на третьем пробеле,
а третье вхождение точное и вырежет подстроку " vskin-vol-high", должно остаться:
vskin-btn vskin-btn-type-single vskin-btn-mute vskin-vow-high vskin-vol-low
Снова поиск с начала строки.
У нас три сброса и вырезаем "vskin-vol-low", должно остаться:
vskin-btn vskin-btn-type-single vskin-btn-mute vskin-vow-high
Почему результаты разные?