Вы можете использовать
.
См. Демо-версию regex
Если они должны быть цифрами, замените .
на d
:
.replace(/d(?=d?$)/g, "<span>$&</span>")
Образец соответствует
d
- цифра(?=d?$)
- за ним следует конец строки или цифры и конца строки.
Это $&
замещающая обратная ссылка, которая ссылается на все значение соответствия из шаблона замены строк.
JS demo:
console.log("-1:23".replace(/.(?=.?$)/g, "<span>$&</span>"));
console.log("-1:23".replace(/d(?=d?$)/g, "<span>$&</span>"));
Теперь, чтобы сделать его более динамичным, вы можете использовать ограниченный (диапазон / интервал) квантификатор :
function wrap_chars(text, num_chars) {
var reg = new RegExp(".(?=.{0," + (num_chars-1) + "}$)", "g");
return text.replace(reg, "<span>$&</span>");
}
console.log(wrap_chars("-1:23", 1)); // wrap one char at the end with span
console.log(wrap_chars("-1:23", 2)); // wrap two chars at the end with span