Я пытаюсь создать спам-фильтр с использованием регулярных выражений, который соответствует следующей ситуации.
- Существует группа ровно из 8 буквенно-цифровых символов, которые должны быть сопоставлены.
- Он должен содержать 2 или более заглавных буквы;
- И он должен содержать 2 или более строчных буквы;
- И он должен содержать 1 или более цифр.
Пока все, что мне удалось придумать, это:
(?i)[A-Za-z0-9]{8}
Мой код действительно соответствует смешанной группе регистров из 8, но не использует верхний или нижний регистр и не указывает, сколько раз должен встречаться каждый тип. Итак, я сочетаю это с другими обязательными элементами, которые всегда присутствуют в рассматриваемых сообщениях.
Вот пример шаблона, который я пытаюсь обнаружить:
WbNDSk9e
Это часть спам-адреса. Другие группы, которые я видел, следуют той же схеме, по крайней мере, по 2 буквы UC и LC и 1 или более цифр, и всегда имеют ровно 8 символов. Других персонажей или вариаций я пока не видел.
Насколько мне известно, единственный переключатель, который я могу использовать, — это включить чувствительность к регистру с помощью (?i). Некоторые другие переключатели, которые я видел в некоторых ответах, не работают в программе, которую я использую. Я требую слишком многого от однострочного правила RegExpr?
В настоящее время я использую RegEx Match для проверки своих правил, и моя антиспамовая программа использует тот же движок.