Как с помощью регулярных выражений заменить несколько вхождений не идущих подряд символов?

1. Дан номер карты:
1234 5678 9999 0000
Как лучше всего его привести к виду:
**** ***** ***** 0000
Используя только лишь регулярные выражения?

2. Дана случайная строка, например:
ABC123PPE553QQ999
Необходимо заменить первые пять цифр, например:
ABC***PPE**3QQ999
Я правильно понимаю, что это сделать с помощью регулярных выражений невозможно?
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 1
Moskus
@Moskus
Почему это второе - нельзя?
Ищем
^([^\d]*?)\d([^\d]*?)\d([^\d]*?)\d([^\d]*?)\d([^\d]*?)\d(.*)

заменяем на
$1*$2*$3*$4*$5*$6
В первые пять capture group кладется либо ничего, либо любое число не-цифр. В последнюю - остаток строки после последней цифры. Предполагается, что в строке всегда есть не менее пяти цифр.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы