Verificatie van

in Delphi, e - mail adres, e - mailadres geldig is?,,, of het e - mailadres van deskundigen, in, en dat is nu heel algemeen, onze programma 's in de database van de gegevens van het e - mailadres van personeel, klanten, leveranciers, gebruikers, wanneer blijkt dat de e - mail, hoe weten we of de waarde van de juiste is?In dit artikel zal de show van je hoe je met een e - mail addresses of valideren van de RFC #822.,,, de RFC #822 door de "zal voor de vorm van de tekst MESSAGES ARPA Internet".,,, volgens deze regel de volgende e - mail, zijn geldig addresses:,,, John, [email protected], John doe < [email protected]>,, "John doe [email protected]", "John doe" < [email protected]>,,, de toepassing van de code is niet te valideren. Deze dingen, maar strictly wat is noodzakelijk om een enkele begunstigde bereiken (zoals "[email protected]"), die in het productdossier is bedoeld Als een "addr-spec". Heeft de local-part@domain.,,,,,,, local-part = 1 "het woord" of meer gescheiden door periods, een "sub-domain, domein =" of meer gescheiden.,,,,,, "de woorden" is een "voor" of "...":,,,,, in het kader van&#atoom = 33. 126 een of meer letters&#behalve () < > @,;: ". [], en een string, = in Een gesloten dubbele aanhalingstekens kan worden opgenomen in een of meer van de tekst karakter (# 0...) met uitzondering van 13" en #.Een schuine streep (*) de volgende karakter van de markt.,,,,,, "- domein" is een "- domein nummer" ("nucleaire") of "- domein tekst":,,,, het domein van een tekst kunnen worden opgenomen in de tussen haakjes = 0 een of meer personen van een tekst (# 0...) met uitzondering van "[of]" en .Een schuine streep (*) verwijzingen naar de volgende karakter.,,,,,, op basis van tekens (RFC 822, uitbreiding van€.ÿ) niet kan worden beschouwd als een onderdeel van het e - mailadres van e - mail server, maar veel te aanvaarden en de mensen die ze gebruiken, dus Ik moet rekening worden gehouden met hun RFC 822 over.,,, de domeinnaam is open.Voor een echte Internet, e - mail adres misschien moeten we een deel van het afgebakende gebied.Je kunt in RFC 1034 1035&#en RFC&#meer te lezen over de domeinnaam.,,, in RFC 1034 1035 en RFC, domeinnaam door "- domein" scheiding die in een periode van ieder gebied is met een letter (A, a..z,) en het volgen van één of meer letters, cijfers en zelfs De karakter, maar niet met een koppelteken.We moeten overwegen dat een geldige domein moeten ten minste twee "gebied" (zoals de "hosts").,, nu hebben we duidelijke regels, laten we aan het werk gaan.Het algoritme van de functies die vergelijkbaar zijn met die van een staat van de machine.String karakter in een cyclus voor verwerking, en voor elk karakter, we bepalen welke staat de machine is, dan hebben we te maken met het oog op de vaststelling van de machine of het karakter, moeten blijven in de staat, de overgang naar een andere staat of de oprichting van een fout (breken cyclus).Dit soort waarop zijn extensively behandeld in programming-algorithms textbooks, dus we krijgen recht op de code,,, ValidEmail (E - mail: touw): een waarde;,, ///////e - mail adres terug als het waar is, geldig, auteur: Ernesto D'Spirito totaal //////////////,,,, de tekens van een geldige "meer", atom_chars = [#33..#255] - [de "(" "),'<",'> "," @, ",", ";", ":",,,'\\', "/", "" "," ",'[',']', #127];,, ///////geldige tekens in A" quoted-string ", quoted_string_chars = [#0..#255] - #13 [de" "",,,,'\\']; ///////geldige tekens in a subdomain, brieven, = ['A'..'Z','a'..'z'];,, letters_digits = ['0'..'9','A'..'Z','a'..'z'];,, subdomain_chars = ['-','0'..'9','A'..'Z','a'..'z'];,,,, staat = (state_begin, state_atom, state_qtext, state_qchar,,, state_quote, state_local_period, state_expecting_subdomain,,,,, state_subdomain, state_hyphen); var, staat: de staat;,, ik, n, C, sub:.;:,,,,, coke, staat: = state_begin;,,, n = lengte (E - mail); m = 1;,,,,,,,,, (= 1; ik < = n), e - mail, C = [M]; de staat van de zaak,,,,,, als state_begin:C in atom_chars dan, staat: = state_atom, C = ", of als", staat: = state_qtext, andere,,,,,,, als state_atom: breekt; c = @ = state_expecting_sub dan, staat:Gebied C = ", of als". En dan, staat: = state_local_period, als het niet, andere (C - atom_chars) en,,,,,, als state_qtext: breekt; c = "en", staat: = state_qchar, C = ", of als" dan, staat: = state_quote, Andere als niet. (C quoted_string_chars) en,,,,,, state_qchar breken;:: = state_qtext staat;,,,, als state_quote:C = @ dan, staat: = state_expecting_subdomain, of als c = "." en dan staat: = state_local_period bovendien breken;,,,,,,, state_local_period: Als atom_chars dan C, staat: = state_atom, of als c = ", de".Tate: = state_qtext, andere,,,,,,,, state_expecting_subdomain overtreden; als de letter C, staat: = state_subdomain, andere,,,,,,, als state_subdomain: breekt; c = "." en toen begon de (sub);,,,,, staat: = state_expecting_subdomain, eindelijk. Als C = "-" dan, staat: = state_hyphen, als het niet, andere (C - letters_digits) en,,,,,, state_hyphen: breekt; als C in de letters_digits dan, staat: = state_subdomain, of als de C < > "-" breken,,,,,,,, aan het einde van (i);,,,,, als ik voorbij; < = n = valse resultaten:,,,,, de resultaten van andere, state_su: = (status =Bdomain) en (sub > = 2);,,,,, aan het einde van deze functie; een verbetering van de samenwerking zou welkom zijn.,,, kan je in het dossier met de mededeling van 22&#PESCA te vinden in dit artikel, de source code.



Previous:
Next Page: