Проблема в том, что вы фактически не добавляете space
в свое регулярное выражение. Вместо этого вы снова заменяете текст тем же значением. Кроме того, вы не обновляете value
замененным значением. Вы просто возвращаете текущее значение, например:
function transform(value) {
if (value != null) {
value.replace(/[^\dA-Z]/g, '')
.replace(/(.{4})/g, value)
.trim();
console.log(value);
}
return value;
}
transform('123456789') //=> 123456789 ... returns same value
Чтобы исправить это, вам необходимо:
Добавить пробел после каждой совпадающей группы, например:
.replace(/(.{4})/g, '$1 ')
$1
здесь представляет 1-ю группу захвата регулярного выражения.
Затем обновите значение новым замененным значением, например:
value = value.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim();
function transform(value) {
if (value != null) {
value = value.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim();
console.log(value);
}
return value;
}
transform('123456789')
//=> 1234 5678 9 ... returns value w/ a space every 4 character