Найкращий регулярний вираз для перевірки електронних адрес

Найкращий регулярний вираз для перевірки електронних адрес
PHP

Ефективні методи перевірки електронної пошти

Протягом багатьох років я поступово розробив регулярний вираз, який правильно перевіряє більшість адрес електронної пошти, за умови, що вони не використовують IP-адресу як серверну частину. Цей регулярний вираз використовується в кількох програмах PHP і загалом працює добре.

Однак час від часу я отримую відгуки від користувачів, які мають проблеми із сайтом, який використовує цей регулярний вираз. Це часто вимагає коригування, наприклад оновлення регулярного виразу для розміщення чотирьохсимвольних TLD. Який найкращий регулярний вираз для перевірки електронних адрес?

Команда опис
preg_match Виконує зіставлення регулярного виразу в PHP і повертає 1, якщо шаблон збігається, і 0 в іншому випадку.
regex.test() Перевіряє збіг у JavaScript за допомогою регулярного виразу та повертає true, якщо збіг знайдено, і false в іншому випадку.
re.match() Перевіряє відповідність у Python за допомогою регулярного виразу та повертає відповідний об’єкт, якщо шаблон збігається, в іншому випадку – нічого.
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ Шаблон регулярного виразу, який використовується для перевірки електронних адрес шляхом зіставлення буквено-цифрових символів, спеціальних символів і дійсних доменних імен.
echo Виводить один або кілька рядків у PHP. Використовується для відображення результату перевірки електронної пошти.
console.log() Виводить повідомлення на веб-консоль у JavaScript, корисне для налагодження та відображення результатів перевірки.
print() Виводить вказане повідомлення на консоль або стандартний вивід у Python.

Розуміння сценаріїв перевірки електронної пошти

Надані сценарії демонструють, як перевіряти адреси електронної пошти за допомогою регулярних виразів на різних мовах програмування: PHP, JavaScript і Python. Кожен сценарій виконується за подібним шаблоном: визначення функції для виконання перевірки, застосування регулярного виразу до вхідного електронного листа та перевірка відповідності. У сценарії PHP, preg_match функція використовується для зіставлення електронної пошти з шаблоном регулярного виразу. Ця функція повертає 1, якщо шаблон відповідає введеній електронній пошті, і 0 в іншому випадку. Використаний регулярний вираз, /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/, розроблено відповідно до типових форматів електронної пошти, дозволяючи буквено-цифрові символи, спеціальні символи та дійсні доменні імена довжиною двох або більше символів для TLD.

У прикладі JavaScript функція regex.test() використовується для перевірки електронного листа на той самий шаблон регулярного виразу. Ця функція повертає true, якщо електронний лист відповідає шаблону, і false, якщо не відповідає. Потім результат реєструється на консолі за допомогою console.log(), що корисно для цілей налагодження. Так само сценарій Python використовує re.match() функція перевірки відповідності. Якщо електронний лист відповідає регулярному виразу, повертається відповідний об’єкт; інакше повертається None. Результат перевірки друкується на консолі за допомогою print() функція. Ці сценарії забезпечують простий спосіб перевірки адрес електронної пошти за допомогою регулярних виразів, гарантуючи, що вхідні дані відповідають очікуваному формату.

Комплексний сценарій PHP для перевірки електронної пошти

Код PHP для перевірки єдиного регулярного виразу

<?php
// Function to validate email address
function validateEmail($email) {
    // Regular expression for email validation
    $regex = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';
    // Return true if email matches regex, false otherwise
    return preg_match($regex, $email) === 1;
}
// Example usage
$email = "example@example.com";
if (validateEmail($email)) {
    echo "Valid email address.";
} else {
    echo "Invalid email address.";
}
?>

Рішення JavaScript для перевірки електронної пошти

Код JavaScript з використанням регулярного виразу

<!DOCTYPE html>
<html>
<head>
    <title>Email Validation</title>
</head>
<body>
    <script>
    // Function to validate email address
    function validateEmail(email) {
        // Regular expression for email validation
        var regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
        // Return true if email matches regex, false otherwise
        return regex.test(email);
    }
    // Example usage
    var email = "example@example.com";
    if (validateEmail(email)) {
        console.log("Valid email address.");
    } else {
        console.log("Invalid email address.");
    }
    </script>
</body>
</html>

Сценарій Python для перевірки електронної пошти

Код Python з використанням регулярного виразу

import re
def validate_email(email):
    # Regular expression for email validation
    regex = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
    # Return true if email matches regex, false otherwise
    return re.match(regex, email) is not None
# Example usage
email = "example@example.com"
if validate_email(email):
    print("Valid email address.")
else:
    print("Invalid email address.")

Розширені методи перевірки електронної пошти

Перевірка електронної пошти за допомогою регулярних виразів може бути складною через широкий спектр допустимих форматів електронної пошти. Одним із аспектів, який часто забувають, є обробка інтернаціоналізованих доменних імен (IDN) і адрес електронної пошти з символами Unicode. Сучасні програми повинні підтримувати користувачів у всьому світі, тому слід розглянути можливість використання регулярних виразів, які можуть обробляти такі випадки. Наприклад, IDN використовують символи, відмінні від ASCII, що означає, що типовий регулярний вираз може не перевірити їх правильно.

Крім того, забезпечення відповідності таким стандартам, як RFC 5321 і RFC 5322, може підвищити надійність перевірки електронної пошти. Ці стандарти описують специфікації форматів адрес електронної пошти, включаючи прийнятні символи та загальну структуру. Узгодивши регулярний вираз із цими стандартами, розробники можуть створити більш надійні сценарії перевірки. Наприклад, дозвіл коментарів в адресах електронної пошти або правильна обробка рядків у лапках може бути критично важливою для повної відповідності.

Часті запитання про перевірку електронної пошти

  1. Який найкращий регулярний вираз для перевірки електронних адрес?
  2. Зазвичай використовується регулярний вираз /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/, що відповідає більшості форматів електронної пошти.
  3. Чи можуть регулярні вирази обробляти всі допустимі формати електронної пошти?
  4. Ні, деякі граничні випадки, наприклад інтернаціоналізовані адреси електронної пошти, можуть не оброблятися простими регулярними виразами.
  5. Як я можу перевірити електронні адреси з міжнародними доменами?
  6. Ви можете використовувати більш складний регулярний вираз або бібліотеки, призначені для міжнародної перевірки електронної пошти.
  7. Які існують деякі обмеження використання регулярних виразів для підтвердження електронної пошти?
  8. Регулярні вирази можуть не охоплювати всі крайові випадки та можуть стати надто складними. Вони також не перевіряють існування домену чи адреси електронної пошти.
  9. Чи існує стандарт RFC для адрес електронної пошти?
  10. Так, RFC 5321 і RFC 5322 визначають стандарти для форматів і специфікацій адрес електронної пошти.
  11. Чому дійсна електронна адреса може не пройти перевірку?
  12. Проблеми можуть виникнути через те, що строгі регулярні вирази не враховують певні дійсні символи чи формати, наприклад довгі TLD або спеціальні символи.
  13. Чи слід використовувати перевірку електронних листів на стороні сервера чи клієнта?
  14. Обидва рекомендовані. Перевірка на стороні клієнта забезпечує миттєвий зворотний зв’язок, тоді як перевірка на стороні сервера забезпечує безпеку та точність.
  15. Як я можу виконати перевірку електронної пошти для реєстраційних форм користувачів?
  16. Використовуйте регулярні вирази для початкової перевірки та продовжуйте перевірку домену або надішліть електронний лист із підтвердженням.
  17. Чи можу я використовувати регулярні вирази для перевірки наявності одноразових адрес електронної пошти?
  18. Хоча ви можете спробувати відфільтрувати звичайні одноразові домени електронної пошти, для цієї мети краще використовувати спеціалізовані служби.
  19. Які інструменти доступні для перевірки електронної пошти?
  20. Бібліотеки та API, як-от EmailVerifyAPI, Hunter.io, і вбудовані функції перевірки у рамках можуть покращити перевірку електронної пошти.

Останні думки щодо перевірки електронної пошти

Перевірка електронних адрес за допомогою регулярних виразів може бути складною через різноманітні формати та стандарти. Використовуючи комплексні та ретельно розроблені регулярні вирази, розробники можуть ефективно перевіряти більшість форматів електронної пошти, включно зі складними доменними іменами та спеціальними символами. Постійне вдосконалення та дотримання таких стандартів, як RFC 5321 і RFC 5322, є важливими для підтримки точності та надійності цих сценаріїв перевірки. Належна перевірка покращує взаємодію з користувачем і гарантує підтримку цілісності даних у веб-додатках.