Какие есть правила валидации полей

На всех проектах Mindbox существуют правила заполнения полей. При передаче информации происходит проверка передаваемых данных. Валидация проверяет, что в поле записываются разрешенные для него символы и количество этих символов не превышает лимит.

ФИО

Зависит от настроек в анкете клиента:

анкета.png

Русский алфавит

В начальных настройках выбран русский алфавит.

То есть разрешены символы из регулярного выражения:

^[А-яЁё][А-яЁё’\- ]*$

Что это значит:

  • Первый символ (или единственный, если он один) должен быть любой буквой русского алфавита.
  • Дальше — любая буква русского алфавита, апостроф, дефис или пробел.

Другие алфавиты и «любые символы»

Можно дополнительно подключить английский, белорусский, казахский, киргизский, польский или украинский алфавиты.

После добавления нового алфавита убрать его из настроек нельзя.

Если нужного вам алфавита нет в представленном списке, выберите опцию «любые символы».

Регулярное выражение для него:

^[\p{L}`’‘’\- \.0-9\(\)\+=\?\*\/«\!\,_\@№\:·\p{IsArabic}\p{IsArabicPresentationForms-A}\p{IsArabicPresentationForms-B}
\p{IsArmenian}\p{IsBengali}\p{IsBuhid}\p{IsCherokee}\p{IsCyrillic}\p{IsCyrillicSupplement}\p{IsDevanagari}\p{IsEthiopic}
\p{IsGeorgian}\p{IsGreek}\p{IsGreekExtended}\p{IsGujarati}\p{IsBopomofo}\p{IsBopomofoExtended}\p{IsHanunoo}
\p{IsHebrew}\p{IsHiragana}\p{IsKannada}\p{IsLao}\p{IsTagbanwa}\p{IsMongolian}\p{IsMyanmar}\p{IsKatakana}
\p{IsKatakanaPhoneticExtensions}\p{IsKhmer}\p{IsKhmerSymbols}\p{IsMalayalam}\p{IsGurmukhi}\p{IsOriya}\p{IsRunic}
\p{IsSinhala}\p{IsSyriac}\p{IsTagalog}\p{IsTaiLe}\p{IsTamil}\p{IsTelugu}\p{IsOgham}\p{IsThaana}\p{IsThai}\p{IsTibetan}
\p{IsYiSyllables}\p{IsYiRadicals}\p{IsHangulSyllables}\p{IsHangulJamo}\p{IsLimbu}\p{IsCJKUnifiedIdeographs}
\p{IsCJKUnifiedIdeographsExtensionA}\p{IsCJKCompatibility}\p{IsCJKRadicalsSupplement}\p{IsCJKSymbolsandPunctuation}
\p{IsEnclosedCJKLettersandMonths}\p{IsCJKCompatibilityIdeographs}\p{IsCJKCompatibilityForms}\p{IsHangulCompatibilityJamo}
\p{IsUnifiedCanadianAboriginalSyllabics}Ა-Ჿ]*$

В таком случае можно использовать буквы из перечисленных алфавитов, цифры и символы `’‘'-.()+=?*/"!,_@№:·

Количество символов

Не больше 100 в каждом поле.

Иногда при передаче ФИО через общее поле FullName мы не можем определить, что является именем и фамилией, и записываем всё в имя. Подробнее.
В таком случае ФИО в целом должно быть не более 100 символов с учетом пробелов, потому что запись сохраняется в одном поле.

Мобильный номер

Зависит от настроек в анкете клиента (см. скриншот выше).

В начальных настройках выбран телефонный код России. Можно добавить код любой страны.

Символы

При записи мы отбрасываем все символы, кроме цифр. Поэтому наличие и порядок скобок, тире и плюсов не имеет значения. Главное, чтобы был код страны и достаточное количество цифр.

Код

Номер должен начинаться с международного или внутреннего кода (для России это 7 и 8 соответственно).
Мы в любом случае сохраняем с международным кодом.

Количество символов

При использовании кода России, остальная часть номера должна содержать 10 цифр.
При использовании любого другого разрешенного кода, остальная часть должна содержать хотя бы 1 символ, а длина всего номера должна быть до 19 цифр включительно.

Email

Проверяется регулярным выражением:

^([\p{L}0-9_\-!#\$%&’\*\+/=\?\^`\{}\|~])+([\.\p{L}0-9_\-!#\$%&’\*\+/=\?\^`\{}\|~])*@
([\p{L}0-9]([\p{L}0-9\-]{0,61}[\p{L}0-9])?\.)*[\p{L}0-9]([\p{L}0-9\-]{0,61}[\p{L}0-9])?$

Что это значит:

  • Часть до @
    • Минимум один символ.
    • Первый — любая буква, цифра или символ _-!#$%&'*+/=?^`{​​}|~
    • Дальше — любая буква, цифра или символ ._-!#$%&'*+/=?^`{​​}|~ (прибавляется точка)
  • Символ @
  • Часть после @
    • Минимум один символ.
    • Может разделяться на доменные группы точками. При этом в каждой группе:
      • Первый и последний символ — любая буква или цифра.
      • Остальные — любая буква, цифра или тире.
      • 1-63 символа (включая точку-разделитель).

Количество символов

До 254 символов включительно.

Пол

Принимаемые форматы:

  • male/female
  • m/f
  • m/w

Регистр не важен.

Дополнительные поля

Строка и идентификаторы

Любые символы.
До 1000 символов включительно.

Перечисление

Любые символы, кроме |.
До 250 символов включительно в каждом значении.

Символ | можно передавать в качестве разделителя в файлах импорта при использовании множественных значений.

Целочисленный

Только цифры.
Значения от −2147483648 до 2147483647 (10 символов не включая минус).

Десятичный

Только цифры с точкой или запятой.
До запятой — максимум 16 символов, после запятой — максимум 2 символа.
Значения от −9999999999999999.99 до 9999999999999999.99

Логический

Принимаемые форматы:

  • true/false
  • yes/no
  • 1/0

Регистр не важен.

Дата, дата и время

Принимаемые форматы:

dd.MM.yyyy HH:mm:ss.FFF
dd.MM.yyyy H:mm:ss.FFF
dd.MM.yyyy HH:mm:ss
dd.MM.yyyy H:mm:ss
dd.MM.yyyy HH:mm
dd.MM.yyyy H:mm
dd.MM.yyyy
d.M.yyyy HH:mm:ss.FFF
d.M.yyyy H:mm:ss.FFF
d.M.yyyy HH:mm:ss
d.M.yyyy H:mm:ss
d.M.yyyy HH:mm
d.M.yyyy H:mm
d.M.yyyy
yyyy.MM.dd HH:mm:ss.FFF
yyyy.MM.dd H:mm:ss.FFF
yyyy.MM.dd HH:mm:ss
yyyy.MM.dd H:mm:ss
yyyy.MM.dd HH:mm
yyyy.MM.dd H:mm
yyyy.MM.dd
yyyy.M.d HH:mm:ss.FFF
yyyy.M.d H:mm:ss.FFF
yyyy.M.d.M.d HH:mm:ss
yyyy.M.d H:mm:ss
yyyy.M.d HH:mm
yyyy.M.d H:mm
yyyy.M.d
yyyy-MM-dd HH:mm:ss.fff
yyyy-MM-dd HH:mm:ss.FFF
yyyy-MM-dd H:mm:ss.FFF
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd H:mm:ss
yyyy-MM-dd HH:mm
yyyy-MM-dd H:mm
yyyy-MM-dd
yyyy-M-d HH:mm:ss.FFF
yyyy-M-d H:mm:ss.FFF
yyyy-M-d HH:mm:ss
yyyy-M-d H:mm:ss
yyyy-M-d H:m:s
yyyy-M-d HH:mm
yyyy-M-d H:mm
yyyy-M-d
MM/dd/yyyy HH:mm:ss
MM/dd/yyyy H:mm:ss
MM/dd/yyyy HH:mm
MM/dd/yyyy H:mm
MM/dd/yyyy
MM/dd/yy

Если в поле типа дата передаются часы и минуты, они отбрасываются при записи.

Если данные не проходят валидацию

Невалидное значение не будет записано в поле.

Срабатывает ли при этом операция?

В таком случае вызов операции может либо выполниться с предупреждением, либо не выполнится совсем. В первом случае мы сохраним данные по остальным полученным полям, во втором — не сохраним ничего.

В большинстве случаев при нарушении правил валидации, операция выполняется.

Исключения, при которых операция не выполняется:

  • Превышение лимита символов в полях ФИО (если сами символы валидные).
  • Превышение лимита символов в поле с типом «перечисление» (если передано имеющееся значение из поля или у поля включена настройка «Создавать значение перечисления, если не найдено»).
  • Наличие символа | в поле с типом «перечисление».
  • Невалидное поле — единственный идентификатор клиента. Мы не можем создать клиента без идентификаторов.
Собираем единый профиль клиента для точного таргетинга, улучшения пользовательского опыта, чистоты данных.