Настраиваемое регулярное выражение O365 DLP

Я пытаюсь создать настраиваемое регулярное выражение для определения номеров социального страхования в O365 DLP. Условия: первое трехзначное число не должно начинаться с 000, 666 или 150, а последние конечные четырехзначные числа не должны заканчиваться на 0000. Поэтому я придумал следующее регулярное выражение:

(?!000|666|150)\d{3}-\d{2}-(?!0000)\d{4} - Это отлично работает

Требуется решение: что, если я хочу исключить тот же шаблон, если он начинается со слова, например, Apple: 173-12-9878 или Content: 173-12-9878, я попытался добавить слово в отрицательный прогноз, например (?!Apple: |Content:)(?!000|666|150)\d{3}-\d{2}-(?!0000)\d{4}, но я не могу получить эту работу.

Пожалуйста, посоветуйте, а также предложите, есть ли лучший способ добиться этого. Спасибо.

1 ответ

Используйте регулярное выражение с просмотром назад:

\b(?<!Apple: |Content: )(?!0{2}|666|150)\d{3}-\d{2}-(?!0{4})\d{4}\b

См. Доказательство и объяснение.

В (?<!Apple: |Content: ) отрицательный просмотр назад предотвратит совпадение после Apple: а также Content:.

Заметка \b является границей слова, он не позволит сопоставить более длинные числа, чем вы ожидаете.

Другие вопросы по тегам