Код Middle Логирование, реагирование и ПДн обновлено

Маскирование email и номеров карт в логах

Условие

Напишите maskPii(text), которая маскирует персональные данные в строке лога:

  • email вида local@domain.tld (local из латинских букв, цифр и ._%+-, domain из латинских букв, цифр, точек и дефисов, затем точка и не меньше двух букв) заменяется на первый символ local, затем ***@ и домен целиком: ivan.petrov@mail.ru → i***@mail.ru;
  • последовательность из 13-19 цифр подряд (не являющаяся частью более длинной последовательности цифр) считается номером карты: все цифры, кроме последних четырёх, заменяются на *.

Остальной текст не меняется.

Примеры

maskPii("user ivan.petrov@mail.ru logged in") // "user i***@mail.ru logged in"
maskPii("card=4111111111111111 ok") // "card=************1111 ok"
maskPii("a@b.co") // "a***@b.co"

Как подойти

Подсказки: 2
  1. Два вызова replace с регулярными выражениями.
  2. Просмотр назад (?<!\d) и вперёд (?!\d) отделит последовательность от более длинных.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.