I had need for something like this recently so I thought I'd share in case someone else needs it.
function preg_replace_callback(pattern, callback, string) {
[...string.matchAll(pattern)].forEach(value => {
string = string.replace(value[0], callback(value));
});
return string;
}
let foo, result;
// Capitalize first letters
foo = 'The quick brown fox jumped over the lazy dog.';
result = preg_replace_callback(/\s([a-z])/gm, matches => matches[0].toUpperCase(), foo);
console.log(result);
// Result: "The Quick Brown Fox Jumped Over The Lazy Dog."
// Double found numbers
foo = 'Their ages are 12, 15, and 22.';
result = preg_replace_callback(/([0-9]+)/gm, matches => matches[0] * 2, foo);
console.log(result);
// Result: "Their ages are 24, 30, and 44."
Top comments (0)