Bedste regulære udtryk til validering af e-mail-adresser

Bedste regulære udtryk til validering af e-mail-adresser
PHP

Effektive teknikker til e-mailvalidering

Gennem årene har jeg efterhånden udviklet et regulært udtryk, der validerer de fleste mailadresser korrekt, forudsat at de ikke bruger en IP-adresse som serverdel. Dette regex bruges i flere PHP-programmer og fungerer generelt godt.

Jeg modtager dog lejlighedsvis feedback fra brugere, der oplever problemer med det websted, der anvender dette regex. Dette kræver ofte justeringer, såsom opdatering af regex for at rumme fire-tegns TLD'er. Hvad er det bedste regulære udtryk, du har stødt på til at validere e-mail-adresser?

Kommando Beskrivelse
preg_match Udfører et regulært udtryksmatch i PHP og returnerer 1, hvis mønsteret matcher, ellers 0.
regex.test() Tester for et match i JavaScript ved hjælp af et regulært udtryk og returnerer sandt, hvis der findes et match, ellers falsk.
re.match() Kontrollerer for en match i Python ved hjælp af et regulært udtryk og returnerer et match-objekt, hvis mønsteret matcher, ingen ellers.
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ Et regulært udtryksmønster, der bruges til at validere e-mail-adresser ved at matche alfanumeriske tegn, specialtegn og gyldige domænenavne.
echo Udsender en eller flere strenge i PHP. Bruges til at vise resultatet af e-mail-valideringskontrollen.
console.log() Udsender en besked til webkonsollen i JavaScript, nyttig til fejlretning og visning af valideringsresultater.
print() Udsender den angivne besked til konsollen eller standardoutput i Python.

Forståelse af e-mailvalideringsscripts

De medfølgende scripts demonstrerer, hvordan man validerer e-mail-adresser ved hjælp af regulære udtryk på forskellige programmeringssprog: PHP, JavaScript og Python. Hvert script følger et lignende mønster: definerer en funktion til at udføre valideringen, anvender et regulært udtryk på input-e-mailen og kontrollerer for et match. I PHP-scriptet er preg_match funktion bruges til at matche e-mailen mod det regulære udtryksmønster. Denne funktion returnerer 1, hvis mønsteret matcher input-e-mailen og 0 ellers. Det anvendte regulære udtryk, /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/, er designet til at matche typiske e-mail-formater ved at tillade alfanumeriske tegn, specialtegn og gyldige domænenavne med en længde på to eller flere tegn for TLD'et.

I JavaScript-eksemplet er funktionen regex.test() bruges til at teste e-mailen mod det samme regulære udtryksmønster. Denne funktion returnerer sand, hvis e-mailen matcher mønsteret og falsk, hvis den ikke gør det. Resultatet logges derefter til konsollen vha console.log(), hvilket er nyttigt til fejlretningsformål. På samme måde bruger Python-scriptet re.match() funktion til at tjekke for et match. Hvis e-mailen matcher det regulære udtryk, returneres et matchobjekt; ellers returneres ingen. Valideringsresultatet udskrives til konsollen ved hjælp af print() fungere. Disse scripts giver en ligetil måde at validere e-mail-adresser ved hjælp af regulære udtryk, hvilket sikrer, at input er i overensstemmelse med det forventede format.

Omfattende PHP-script til e-mail-validering

PHP-kode til validering af enkelt regulært udtryk

<?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-løsning til e-mail-validering

JavaScript-kode ved hjælp af regulært udtryk

<!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-script til e-mail-validering

Python-kode ved hjælp af regulært udtryk

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.")

Avancerede e-mail-valideringsteknikker

E-mail-validering ved hjælp af regulære udtryk kan være kompleks på grund af det store udvalg af gyldige e-mail-formater. Et aspekt, der ofte overses, er håndtering af internationaliserede domænenavne (IDN'er) og e-mail-adresser med Unicode-tegn. Moderne applikationer skal understøtte brugere over hele verden, og bør derfor overveje at bruge regulære udtryk, der kan håndtere sådanne tilfælde. For eksempel bruger IDN'er ikke-ASCII-tegn, hvilket betyder, at et typisk regulært udtryk muligvis ikke validerer disse korrekt.

Derudover kan sikring af overholdelse af standarder som RFC 5321 og RFC 5322 øge robustheden af ​​e-mailvalidering. Disse standarder skitserer specifikationerne for e-mailadresseformater, herunder acceptable tegn og den overordnede struktur. Ved at tilpasse det regulære udtryk til disse standarder kan udviklere skabe mere pålidelige valideringsscripts. For eksempel kan det være afgørende for fuld overholdelse at tillade kommentarer i e-mailadresser eller håndtere citerede strenge korrekt.

Ofte stillede spørgsmål om e-mailvalidering

  1. Hvad er det bedste regulære udtryk til validering af e-mail-adresser?
  2. Et almindeligt anvendt regulært udtryk er /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/, som matcher de fleste e-mail-formater.
  3. Kan regulære udtryk håndtere alle gyldige e-mail-formater?
  4. Nej, nogle kantsager, såsom internationaliserede e-mail-adresser, håndteres muligvis ikke af simple regulære udtryk.
  5. Hvordan kan jeg validere e-mail-adresser med internationale domæner?
  6. Du kan bruge et mere komplekst regulært udtryk eller bruge biblioteker designet til international e-mail-validering.
  7. Hvad er nogle begrænsninger ved at bruge regulære udtryk til e-mailvalidering?
  8. Regulære udtryk dækker muligvis ikke alle kanttilfælde og kan blive alt for komplekse. De bekræfter heller ikke eksistensen af ​​e-mail-domænet eller -adressen.
  9. Er der en RFC-standard for e-mailadresser?
  10. Ja, RFC 5321 og RFC 5322 definerer standarderne for e-mailadresseformater og specifikationer.
  11. Hvorfor mislykkes valideringen af ​​en gyldig e-mailadresse?
  12. Problemer kan opstå fra strenge regulære udtryk, der ikke tager højde for visse gyldige tegn eller formater, såsom lange TLD'er eller specialtegn.
  13. Skal jeg bruge server-side eller klient-side validering til e-mails?
  14. Begge kan anbefales. Validering på klientsiden giver øjeblikkelig feedback, mens validering på serversiden sikrer sikkerhed og nøjagtighed.
  15. Hvordan kan jeg håndtere e-mail-validering for brugerregistreringsformularer?
  16. Brug regulære udtryk til indledende validering og følg op med domænebekræftelse eller afsendelse af en bekræftelses-e-mail.
  17. Kan jeg bruge regulære udtryk til at tjekke for engangs-mailadresser?
  18. Selvom du kan forsøge at bortfiltrere almindelige engangs-e-mail-domæner, er det bedre at bruge specialiserede tjenester til dette formål.
  19. Hvilke værktøjer er tilgængelige til e-mailvalidering?
  20. Biblioteker og API'er som EmailVerifyAPI, Hunter.io og indbyggede valideringsfunktioner i frameworks kan forbedre e-mailvalidering.

Endelige tanker om e-mail-validering

Validering af e-mail-adresser med regulære udtryk kan være udfordrende på grund af de forskellige formater og standarder, der er involveret. Ved at bruge omfattende og omhyggeligt udformede regulære udtryk kan udviklere effektivt validere de fleste e-mail-formater, inklusive dem med komplekse domænenavne og specialtegn. Kontinuerlig forfining og overholdelse af standarder som RFC 5321 og RFC 5322 er afgørende for at opretholde nøjagtigheden og pålideligheden af ​​disse valideringsscripts. Korrekt validering forbedrer brugeroplevelsen og sikrer, at dataintegriteten opretholdes i webapplikationer.