Основные принципы соответствия
Простым критерием проверки соответствия является Гугл поиск.
Вы должны вводить полные слова, т.к. не существует производных слов (например, joh не будет соответствовать john.smith@gmail.com). Тоже справедливо и для множественного числа (например, app не будет соответствовать apps@example.com).
Порядок слов не имеет значения, если они не заключены в кавычки (например, «smith john» не будет соответствовать john.smith@gmail.com). Как правило, символы игнорируются (см. ниже).
Слова разбиваются, кроме букв, цифр и символов подчеркивания. Самыми распространенными символами для разбивки слов являются +.@. Это означает, что foo не будет соответствовать foo_bar@example.com, но будет соответствовать foo+bar@example.com. Знак @ не считается за слово и может быть пропущен (например, «smith gmail» будет соответствовать john.smith@gmail.com).
Вы можете использовать оператор OR в дополнение к группировке() для некоторых сложных условий.
Поведение символов
Когда вы вводите символы в окне фильтра, то они как правило ведут себя по разному:
- Символы, которые действуют как x y: ~#$%^*+;",<>? и знак ударения*. Например, smith~john становится smith john, который соответствует john.smith@gmail.com.
- Символы, которые действуют как «x y»: -=\:'./. Например, john-smith становится «john smith», который соответствует john.smith@gmail.com.
- Символы, которые трактуются буквально: &_. Например, john_smith будет соответствовать john_smith@gmail.com, но не john.smith@gmail.com.
- Специальные символы: !@()[]{}|:
- !: john!smith становится john -smith, что соответствует john.foo@gmail.com, но не john.smith@gmail.com;
- @:
- @ удаляется в конце слова. Например, john@ становится john, что соответствует john.smith@gmail.com;
- @ удаляется в начале слова. Например, @ foo.com** станет foo.com, что соответствует john+foo.com@gmail.com;
- @ используемый в середине слова, как правило требует полного адреса для успешного поиска. Например, john.smith@gmail не будет соответствовать john.smith@gmail.com. Кроме того, символы будут восприниматься буквально. Например, для поиска john.smith@gmail.com необходимо использовать john.smith@gmail.com, john-smith@gmail.com и john~smith@gmail.com не будут работать;
- @ используемый в разных местах в середине слова, имеет странное поведение. Например, когда мы пытаемся найти john.smith@gmail.com, то при:
- john@smith@gmail@com — не найдется;
- gmail@com — не найдется;
- @ gmail@com — не найдется**;
- smith@gmail@com — найдется;
- smith@gmail.com — не найдется;
- «john smith@gmail.com» — не найдется;
- «john.smith@gmail com» — не найдется;
- | действует как оператор OR.
- Скобки служат для группировки в операторах OR и AND.
Другие примеры поведения
Аккаунт, который вы используете по умолчанию (например, john.smith@gmail.com) будет соответствовать всем вариантам вашего адреса, если вы используете в нем точку, знак + или домен googlemail.com.
Вот краткое описание каждого способа:
- Использование точки: Вы можете вводить сколько угодно точек в вашем адресе электронной почты. Например, если ваш адрес — john.smith@gmail.com, то почта, отправленная на j.o.h.n.s.mith@gmail.com придет на ваш адрес;
- Использование знака +: После имени вашего аккаунта вы можете использовать знак "+" и любой текст. Например, почта, отправленная на адрес john.smith+foo@gmail.com придет на john.smith@gmail;
- Использование домена googlemail.com: Любая почта, отправленная на адрес вашего аккаунта типа <your-gmail-account>@googlemail.com придет на ваш адрес с доменом @ gmail.com**. Например, почта, отправленная на john.smith@googlemail.com придет на john.smith@gmail.com.
Способы представления адреса можно комбинировать друг с другом, например, j.o.h.n.s.m.i.t.h+foo.bar@googlemail.com = john.smith@gmail.com.
Интересные последствия
1. Невозможно сравнить все ваши гугл адреса, в которых используется точка.
Если у вас вошло в привычку использовать точку в вашем адресе электронной почты для предотвращения спама (например, j.ohn.smith@gmail.com), то вы не сможете легко создать фильтр для всех версий вашего адреса с точкой, т.к. они разделяются в этом случае на отдельные слова (j ohn smith).
Когда у вас только один вариант с точкой, то фильтр (например, для спама) создать легко. Однако, если вы начинаете использовать разные варианты с точкой (например, jo.h.n.smi.th@gmail.com), то это станет причиной появления разных слов в адресе (например, jo h n smi th), что заставит вас создать различные условия для каждого варианта.
2. Символ + хуже чем оператор "" при сравнении адресов со знаком "+".
Если вы пытаетесь создать фильтр для адреса, в котором используется +, то лучше всего использовать полный адрес в фильтре (например, john.smith+foo@gmail.com).
Если, по какой-нибудь причине, вы не используете полный адрес, то следует иметь ввиду, что оператор + на самом деле хуже, чем оператор "". Например, использование john+foo хуже, чем «john foo», поскольку первый вариант будет соответствовать foo@john.com.
Имейте ввиду, что последний вариант не является панацеей, т.к. будет найден foo@john.foo.com. Он просто гарантирует правильный порядок слов. Для ясности, вы могли бы использовать «john+foo», но в действительности это тоже самое, что и «john foo».
3. Вы должны использовать отрицание, чтобы найти все адреса с "+", на которые была отправлена почта.
Чтобы отфильтровать все адреса, в которых используется + (например, чтобы отправить их в спам), вам следует использовать запрос вида john.smith@gmail.com -«john smith gmail com». Первая часть запроса найдет все адреса, в которых есть знак +. Вторая часть удалит все адреса, в которых нет слов в том же порядке. Например, john.smith+foo@gmail.com не будет найден, поскольку имеет слово foo между другими словами.
Обратите внимание, что есть один странный и маловероятный случай, когда это не будет работать: john.smith+john.smith.gmail.com@gmail.com, поскольку имеет слова в строго заданном порядке.
Примечания
* — имеется виду символ `, но к сожалению применения его нет у автора;
** — использовать без пробела, т.к. хабр форматирует в хабрапользователя.
Источник
Документация по теме