Handling Forms & User Input

What input handling technique does this demonstrate?
const masks = {
  phone: value => value.replace(/\D/g, '')
    .replace(/^(\d{3})(\d{3})(\d{4})$/, '($1) $2-$3'),
  zipcode: value => value.replace(/\D/g, '')
    .replace(/^(\d{5})(\d{0,4})$/, '$1-$2')
};

form.addEventListener('input', e => {
  const mask = e.target.dataset.mask;
  if (mask && masks[mask]) {
    const value = e.target.value;
    const pos = e.target.selectionStart;
    const newValue = masks[mask](value);
    if (newValue !== value) {
      e.target.value = newValue;
      e.target.setSelectionRange(pos, pos);
    }
  }
});
Next Question (18/20)