質問

私は、文字列が電子メールアドレスで比較的一定であることをInno Setupのスクリプト内の基本的な文字列の検証をやりたいと思っています。私はちょうど続く「@」文字があることを確認したい「が。」文字およびこれらのいずれかの側に少なくとも一つの文字があること。この正規表現に似た何かます:

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

正規表現とオブジェクトパスカルで利用可能な限られた文字列関数の欠如は、私の悲しみを引き起こしています。最初のを見つけ、文字列を逆にするのに十分な単純なことでしょう「」そして、「@」とし、いくつかの比較を行うが、利用可能なリバース(文字列)関数はありません。

私は私が書くヘルパーDLLからエクスポートされた関数を呼び出すことができます知っているが、私はこのソリューションを避けるために期待していた。

他の提案?

役に立ちましたか?

解決

優れ質問!私は答えを提案することを許可する...

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つの文字『は、@』で、』。」。政府の仕事のために十分な閉じます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top