3

文字列が電子メールアドレスであることを比較的確実にするために、Inno Setupスクリプト内で基本的な文字列検証を行いたいと考えています。「@」文字の後に「.」が続くことを確認したいだけです。文字であり、これらの両側に少なくとも 1 つの文字があること。この正規表現に似たもの:

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

object pascal で使用できる正規表現の欠如と制限された文字列関数は、私を悲しませています。文字列を逆にして、最初の「.」を見つけるのは簡単です。と '@' を入力して比較を行いますが、使用できる Reverse(string) 関数はありません。

私が作成したヘルパー DLL からエクスポートされた関数を呼び出すことができることはわかっていますが、この解決策を避けたいと思っていました。

他の提案はありますか?

4

1 に答える 1

7

素晴らしい質問です!答えを提案させてください...

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;

この関数は、電子メール アドレスにスペースがなく、'@' の後に '.' があり、'@' と '.' の両側に少なくとも 1 文字ある場合に true を返します。政府の仕事に十分近い。

于 2010-01-04T20:21:29.277 に答える