Domanda

Sono voler fare una convalida stringa di base all'interno di uno script di Inno Setup per essere relativamente certa la stringa è un indirizzo email. Voglio solo vedere che c'è un carattere '@' seguito da un '' carattere e che ci sia almeno un carattere su entrambi i lati di questi. Qualcosa di simile a questa espressione regolare:

[^@]+@.+\.[^\.]

La mancanza di espressioni regolari e funzioni di stringa limitate disponibili in Object Pascal mi stanno causando dolore. Sarebbe abbastanza semplice per invertire la stringa, trovare il primo '' e '@' e poi fare qualche confronto, ma non c'è alcuna funzione inversa (string) a disposizione.

So che posso chiamare una funzione esportata da una DLL di supporto che scrivo, ma speravo di evitare questa soluzione.

Altri suggerimenti?

È stato utile?

Soluzione

Un ottimo domanda! Mi permetto di suggerire una risposta ...

function ValidateEmail(strEmail : String) : boolean;
var
    strTemp  : String;
    nSpace   : Integer;
    nAt      : Integer;
    nDot     : Integer;
begin
    strEmail := Trim(strEmail);
    nSpace := Pos(' ', strEmail);
    nAt := Pos('@', strEmail);
    strTemp := Copy(strEmail, nAt + 1, Length(strEmail) - nAt + 1);
    nDot := Pos('.', strTemp) + nAt;
    Result := ((nSpace = 0) and (1 < nAt) and (nAt + 1 < nDot) and (nDot < Length(strEmail)));
end;

Questa funzione restituisce true se non ci sono spazi nella indirizzo di posta elettronica, ha un '@' seguito da un ' ' e non v'è almeno un carattere su entrambi i lati della '@' e'.'. Abbastanza vicino per il lavoro del governo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top