регулярное выражение для маскировки всех, кроме последних 4 цифр, кредитной карты с тире, пробелами и начальным номером - PullRequest
0 голосов
/ 05 марта 2019

Я ищу справку АС с регулярным выражением, чтобы замаскировать все номера кредитных карт, но оставить последние 4 цифры.Я нашел несколько сайтов здесь, которые имеют отношение, но не удаляют тире / пробелы.Например:

---- оригинал ----- Visa 4263982640269299 4263982640269299 4263 9826 4026 9299 4263-9826-4026-9299 5263-9826-4026-9299 5263982640269299 5263 9826 4026 9299 ---- ожидаетсярезультат ---- Виза xxxxxxxxxxxx9299 (не хочу связывать начальное слово (я)) xxxxxxxxxxxx9299 xxxxxxxxxxxx9299 xxxxxxxxxxxx9299

не совпадает, b / c не является ведущим номером 4 Visa 5263-9826-4026-9299 5263982640269299 52639826 4026 9299 Я пробовал несколько, но это близко, но не знаю, как исключить последние 4:

\ b4 \ d (?: \ D [-] *?) {13,16}

Спасибо всем заранее за помощь!

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Я наконец нашел ответ на свой вопрос - спасибо всем за помощь!

0 голосов
/ 05 марта 2019

Вы можете использовать положительный шаблон предпросмотра, чтобы убедиться, что перед соответствующим символом есть как минимум 4 не алфавитных символа, и использовать шаблон отрицательного просмотра с вложенным положительным взглядом сзади, чтобы избежать совпадения пробела сразу после алфавита:

(?!(?<=[A-Z])\s)[^A-Z](?=[^A-Z\n]{4,})

Демо: https://regex101.com/r/nA6hN9/155

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...