Как написать многократное регулярное выражение SSN в C# - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь использовать регулярное выражение, чтобы скрыть, когда номер социального страхования предоставляется через часть нашего приложения. Условия, о которых нам говорят, проверяют, передаются ли SSN как 123-45-6789 или 123 45 6789 (просто ищем 3 (пробел или да sh) 2 цифры (пробел или да sh) 3 цифры.

Что у меня есть:

Regex regex = new Regex("\d{3}-\d{2}-\d{4}");

var replacement = regex.Replace(comments, "SSN Hidden");

Итак, я знаю, что регулярное выражение близко, но неверно для черточек, и мне нужна помощь, чтобы выяснить, как включить пробелы. Новое в регулярных выражениях, спасибо заранее.

1 Ответ

0 голосов
/ 22 января 2020

Я предлагаю использовать

var replacement = Regex.Replace(comments, @"\d{3}([- ])\d{2}\1\d{4}", "SSN Hidden");

Попробуйте использовать границы слов \b вокруг шаблона (@"\b\d{3}([- ])\d{2}\1\d{4}\b"), если вам нужно сопоставить эти числа как целые слова. Или используйте lookarounds , чтобы убедиться, что на обоих концах нет других цифр: @"(?<!\d)\d{3}([- ])\d{2}\1\d{4}(?!\d)".

Чтобы \d совпадал только с цифрами ASCII, рассмотрите возможность передачи RegexOptions.ECMAScript опция .

Подробности

См. Демонстрационную версию regex .

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