Донецкий техникум промышленной автоматики

Перевірка даних форм. E-mail адреси і номера ICQ

  1. Формати E-mail адрес
  2. Формати ICQ-номерів
  3. Перевірка полів форм за допомогою регулярних виразів JavaScript
  4. Перевірка ICQ-номерів
  5. Перевірка E-mail адрес
  6. висновки
Версія для друку

Часто при реєстрації на різних сайтах користувача просять залишити свій E-mail адресу. Щоб надалі не відбулося ніяких непорозумінь, інформацію про користувача слід перевіряти перед відправкою на сервер. Звичайно, все поля перевіряти необов'язково, але ті дані, які досить жорстко визначені і обмежені стандартами, необхідно перевірити. Зокрема до них відносяться телефонні номери, адреси електронної пошти та номера ICQ.

З огляду на той факт, що формат таких даних може бути досить різноманітним, слід брати до уваги всі можливі варіанти.

У цій статті ми обмежимося розглядом форматів E-mail адрес і номерів ICQ.

Формати E-mail адрес

E-mail адресу - це спеціальний ідентифікатор, що складається з рядка символів, званої локальної частиною (local-part), за якою слідує знак @ (at-sign, зі ASCII-значенням 64), а потім розташована рядок з ім'ям домена (domain) . Тобто ідентифікатор має вигляд: local-part @ domain.

Локальна частина - це або рядок в лапках, або рядок, яка може бути розділена крапками. Якщо рядок може бути представлена ​​в другій формі, то рекомендується використовувати саме цю форму, а не рядок в лапках.

Локальна частина може містити наступні символи:

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789.! # $% & "* + / - =? ^ _` {|} ~

Локальна частина відділена від доменної за допомогою символу @. Доменна частина ідентифікатора вказує хост, на який має бути доставлено лист.

У доменній частини дозволено використання наступних символів:

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 .-

Локальна частина залежить від доменної, в тому сенсі, що її формат може змінюватися в залежності від політики окремого хоста, використовуваного в якості доменної частини поштової скриньки.

Формати ICQ-номерів

Формати подання ICQ-номерів менш різноманітні, ніж E-mail адреси.

До складу номера ICQ може входити від 5 до 9 цифр. Часто використовується уявлення в форматі: XXX-XXX-XXX. Однак, такий формат не універсальний, тому що, наприклад, 7-значні номери не можуть бути представлені в ньому однозначно. Тому рекомендується використання формату: XXXXXXXXX (з можливою кількістю знаків від 5 до 9).

Різноманітність за кількістю знаків в номері ICQ обумовлено тим, що спочатку, в момент появи сервісу користувачів реєстрували під 6-значними номерами. Потім коли кількості номерів стало не вистачати, кількість знаків доводилося збільшувати, і на сьогоднішній день користувачі можуть зареєструватися лише під 9-значними номерами. Однак, існують сайти, які продають 6, 7, 8-значні номери.

Перевірка полів форм за допомогою регулярних виразів JavaScript

Найбільш зручним способом перевірки введених даних є використання регулярних виразів.

Регулярний вираз - це шаблон, якому зіставляються введені дані (строкові дані). Вони називаються регулярними, так як можуть використовуватися для зіставлення обмеженого набору даних (заздалегідь визначеного формату).

Якщо ви хочете дізнатися більше про використання регулярних виразів в JavaScript, радимо звернутися до книги Томаса Пауелла і Фріца Шнайдера "Повний довідник по JavaScript: Друге видання". У книзі детально описані можливості мови JavaScript для роботи з регулярними виразами.

Перевірка ICQ-номерів

Спершу необхідно створити регулярний вираз, яке б відповідало формату ICQ-номера. У випадку з форматом XXXXXXXXX, регулярний вираз буде таким:

var pattern = / ^ \ d {5,9} $ /;

В JavaScript регулярні вирази обмежуються символами / с двох сторін. Конструкція \ d {5,9} означає, що рядок повинен складатися з цифр (\ d) і містити від 5 до 9 знаків ({5,9}). Символи ^ і $ говорять нам про те, що рядок повністю відповідає цим шаблоном, немає жодного символу до і після нього.

Таким чином, шаблоном будуть відповідати рядки, наприклад, такого виду: 20045697, 102145, 48574, 123456789. шаблон не відповідають рядки: 5422, 1234567890. Рядки містять символи, відмінні від цифрових шаблоном також не відповідають. Ми не розглядаємо формат XXX-XXX-XXX, так як він не універсальний. Користувача завжди слід повідомляти про те, в якому форматі необхідно ввести дані.

Перевірка E-mail адрес

Складання регулярного виразу для перевірки E-mail адрес є більш важким завданням. Формат E-mail адрес був описаний вище, тут ми вкажемо лише регулярний вираз:

var pattern = / ^ (([a-zA-Z0-9] | [! # $% \ * \ / \? \ | ^ \ {\} `~ & '\ + = -_]) + \.) * ([a-zA-Z0-9] | [! # $% \ * \ / \? \ | ^ \ {\} `~ & '\ + = -_]) + @ ([a-zA-Z0 -9 -] + \.) + [a-zA-Z0-9 -] + $ /;

Регулярний вираз записується на одному рядку, без переносів. Рядок означає, що спочатку можуть розташовуватися 0 або більше символів локальної частини, відмінних від точки, з подальшою крапкою, потім розташовуються 1 або більше символів локальної частини, відмінних від точки, потім символ @, потім доменна частина, що відповідає формату.

Для перевірки відповідності шаблоном в JavaScript використовується функція test, яка повертає true, якщо рядок відповідає шаблону і false у протилежному випадку.

var pattern = / ^ (([a-zA-Z0-9] | [! # $% \ * \ / \? \ | ^ \ {\} `~ & '\ + = -_]) + \.) * ([a-zA-Z0-9] | [! # $% \ * \ / \? \ | ^ \ {\} `~ & '\ + = -_]) + @ ([a-zA-Z0 -9 -] + \.) + [a-zA-Z0-9 -] + $ /; pattern.test ( "adam.trent. @ mail.stan.com"); // поверне false pattern.test ( "[email protected]"); // поверне true pattern.test ( "[email protected]"); // поверне true pattern.test ( "adam-trent..sponsor @ mail.stan.com"); // поверне false

висновки

Для забезпечення зручності заповнення форм, а також коректності введених даних необхідно правильно визначати допустимі для введення формати даних. Також потрібно інформувати користувача про те, в якому форматі слід вводити інформацію.

У плані реалізації перевірки форм найбільш вдалим є використання регулярних виразів, які дозволяють підібрати шаблон в переважній більшості випадків.

У статті використані матеріали документа RFC 2822 Internet Message Format .

Amp; "* + / - =?
Adam-trent?